sagen, dass ich die folgenden SQL-Anweisungen, die ich bin Ausführung ExecuteNonQuery(DbCommand)
von C# in einer Web-Anwendung mitExecute Eine SQL-Block ohne Unterbrechung
DECLARE @InsertedProductID INT -- this is passed as a parameter
DECLARE @GroupID INT -- this is passed as a parameter
DECLARE @total INT
SET @total = (SELECT COUNT (*) FROM Products WHERE GroupID = @GroupID)
UPDATE Products SET ProdName = 'Prod_'+ CAST(@total as varchar(15))
WHERE ProductID = @InsertedProductID
Mein Problem ist, dass ich sicherstellen wollen, dass der gesamte Block ausführt ein. Mein Ziel ist es, immer die ProdName
einzigartig pro Gruppe zu haben. Wenn ich alles so belasse, wie es ist, besteht eine gute Chance, dass ich doppelte Produktnamen bekomme, wenn ein insert
zwischen dem Erhalt des @total
und der Ausführung des UPDATE
stattfindet. Gibt es eine Möglichkeit, sicherzustellen, dass der gesamte SQL-Block sofort und ohne Unterbrechung ausgeführt wird? Will exec
oder sp_executesql
dies erreichen? Mein letzter Ausweg wäre ein lock
um die ExecuteNonQuery(DbCommand)
zu setzen. Aber das mag ich nicht, da es einen Flaschenhals schaffen würde. Ich denke nicht, dass die Verwendung einer SQL-Transaktion hier hilfreich ist, da ich mir keine Gedanken über die Integrität der Befehle mache, sondern eher über die Parallelität der Befehle besorgt bin.