2009-12-30 28 views
4

我是一個很長時間的桌面應用程序新的SQL程序員。我需要插入帶有autoincrment字段的表格,並讓該sql語句返回autoincrement字段的新值。SQL INSERT INTO返回自動增量字段

類似:

INSERT INTO Entrys ('Name','Description') 
VALUES ('abc','xyz') 
SELECT Entrys.EntryID WHERE EntryID=[THE ONE JUST INSERTED!] 

對不起,我是一個菜鳥。

+2

你正在使用什麼數據庫? SQL Server,MySQL等? – 2009-12-30 04:03:30

回答

3

選擇SCOPE_IDENTITY

insert into table values ('string value');select scope_identity() 

詳細here

+1

是來自:http://www.velocityreviews.com/forums/t303448-return-identity-after-sql-insert.html?如果是這樣,你應該提供一個鏈接。 – 2009-12-30 03:52:37

2

假設你正在使用SQL Server,你可以使用scope_identity返回「插入在同一範圍內的標識列的最後一個標識值。一個範圍是一個模塊:存儲過程,觸發器,函數或批處理。因此,如果兩個語句處於相同的存儲過程,函數或批處理中,它們處於相同範圍內。「

INSERT INTO Entrys ('Name','Description') VALUES ('abc','xyz'); 
SELECT SCOPE_IDENTITY() 
3

在MySQL中,你可以使用LAST_INSERT_ID()

2

在SQL Server中,您還可以使用INSERT語句中OUTPUT子句:

INSERT INTO Entrys('Name', 'Description') 
OUTPUT Inserted.EntryID 
VALUES ('abc','xyz') 

這將輸出新創建的IDENTITY字段值。

0

至於@marc_s說,對於SQL Server,PostgreSQL中可以得到具有相同的行爲:

INSERT INTO Entrys ('Name','Description') 
VALUES ('abc','xyz') 
RETURNING EntryID; 

RETURNING也是非常有用的,當你插入若干元組,並希望所有爲每個生成的ID的行。