我想用單個腳本在數據庫中創建一堆條目,我遇到的問題是如何引用我創建的上一個條目的生成主鍵。在SQL腳本中引用生成的主鍵
例如,如果我創建了一個客戶,然後嘗試爲該客戶創建一個訂單,那麼如何獲得爲客戶生成的主鍵?
我正在使用SQLServer。
我想用單個腳本在數據庫中創建一堆條目,我遇到的問題是如何引用我創建的上一個條目的生成主鍵。在SQL腳本中引用生成的主鍵
例如,如果我創建了一個客戶,然後嘗試爲該客戶創建一個訂單,那麼如何獲得爲客戶生成的主鍵?
我正在使用SQLServer。
像這樣:
DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = @@IDENTITY;
編輯:
顯然它需要SCOPE_IDENTITY(),以便與觸發器進行正常操作。
DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = SCOPE_IDENTITY();
如果在您的版本中可用,請改爲使用SCOPE_IDENTITY()。比@@ IDENTITY更安全。
如果您一次插入多行,則可以使用OUTPUT INTO
feature of SQL Server 2005 or later獲取所有身份(用於創建相關記錄)。
這可以避免你必須編寫循環和光標等
我相信在大多數情況下,scope_identity()優於@@ IDENTITY。 – 2009-01-16 01:03:06