2013-01-25 26 views
1

可以說我有這個批次:
SQL顯式批次執行

// Insert two order lines for order #2002 (Order_Lines table) 
// Update order #2002 Total Quantity (Orders table) 

INSERT INTO Order_Lines (OrderID, Line, PartID, Quantity) 
    VALUES (2002, 1, 1234, 10); 
INSERT INTO Order_Lines (OrderID, Line, PartID, Quantity) 
    VALUES (2002, 2, 5678, 5); 
UPDATE Orders 
    SET TotalQty = (SELECT SUM(Quantity) FROM Order_Lines WHERE OrderID = 2002) 
    WHERE OrderID = 2002; 

當我運行它,並在批量服務器等各個語句執行完它開始執行下一條語句之前?

我真的很想知道的是,如果我運行這個批次,訂單表將會正確更新。 (如果插入先執行,最後更新,則應正確更新。)

順便說一下,我使用的是SQL 2005和2008服務器。

+1

語句執行是串行的。每個語句將相繼執行一個,可能即使一個失敗。你應該看看'SET XACT_ABORT ON'及其對同一批次執行的查詢效果。 –

+0

@ ta.speot.is:感謝您對「SET XACT_ABORT ON」 – Administrateur

回答

0

是的,你可以期望每個語句的結果提供給後續語句。

+0

買者尖端:聲明有成功有可供後續語句的副作用。 –