2009-01-16 40 views
0

我想用單個腳本在數據庫中創建一堆條目,我遇到的問題是如何引用我創建的上一個條目的生成主鍵。在SQL腳本中引用生成的主鍵

例如,如果我創建了一個客戶,然後嘗試爲該客戶創建一個訂單,那麼如何獲得爲客戶生成的主鍵?

我正在使用SQLServer。

回答

4

像這樣:

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(); 
+0

我相信在大多數情況下,scope_identity()優於@@ IDENTITY。 – 2009-01-16 01:03:06

4

如果在您的版本中可用,請改爲使用SCOPE_IDENTITY()。比@@ IDENTITY更安全。

2

如果您一次插入多行,則可以使用OUTPUT INTOfeature of SQL Server 2005 or later獲取所有身份(用於創建相關記錄)。

這可以避免你必須編寫循環和光標等