我正在使用存儲過程將數據插入到數據庫中,當它插入時它會自動給出一個ID,這是一個標識,它也是表的主鍵。我還需要將數據插入到第二個表中,該表的ID是需要插入的列之一。但它的ID尚未創建,所以我想知道你們如何解決這個問題。我需要它,所以當他們提交我的表單時,它會插入用戶,然後我需要將它添加到基本上會記錄該用戶被創建的表中。這可能嗎。?我使用的是Microsoft SQL Server 2005中SQL插入到兩個表中問題
感謝
我正在使用存儲過程將數據插入到數據庫中,當它插入時它會自動給出一個ID,這是一個標識,它也是表的主鍵。我還需要將數據插入到第二個表中,該表的ID是需要插入的列之一。但它的ID尚未創建,所以我想知道你們如何解決這個問題。我需要它,所以當他們提交我的表單時,它會插入用戶,然後我需要將它添加到基本上會記錄該用戶被創建的表中。這可能嗎。?我使用的是Microsoft SQL Server 2005中SQL插入到兩個表中問題
感謝
INSERT INTO Table1 (SomeColumn) Values ('SomeValue')
DECLARE @NewIdent int
SELECT @NewIdent = SCOPE_IDENTITY()
INSERT INTO Table2 (SomeColumn, T1ID) VALUES ('SomeValue',@NewIDent)
你可以看一下什麼@@ IDENTITY,SCOPE_IDENTITY()和IDENT_CURRENT,看看哪一個會滿足您的需求最好的。我懷疑SCOPE_IDENTITY會完成這項工作。
Here is a good article他們都在做什麼。
使用輸出子句從第一插入獲取ID和使用在礦井二次插入該值。
檢查第一次插入後scope_identity()系統函數的結果;它將包含先前插入的記錄的ID(假定ID是使用標識列自動生成的)。正如評論中所述,這比使用@@身份更好,因爲@@身份可能不準確,或者當數據庫中存在觸發器時或在高流量的情況下可能會被搶佔時,會導致問題。
U可以使用SCOPE_IDENTITY()插入新身份()
您使用的是什麼RDBMS? – 2011-03-29 15:04:00