我是SQL新手的长期桌面应用程序C ++程序员。我需要插入一个带有autoincrment字段的表,并让该sql语句返回autoincrement字段的新值。
喜欢的东西:
INSERT INTO Entrys ('Name','Description')
VALUES ('abc','xyz')
SELECT Entrys.EntryID WHERE EntryID=[THE ONE JUST INSERTED!]
抱歉是个菜鸟。
答案 0 :(得分:3)
答案 1 :(得分:3)
在MySQL中,您可以使用LAST_INSERT_ID()
答案 2 :(得分:2)
假设您正在使用SQL Server,您可以使用scope_identity返回“插入同一范围内的标识列的最后一个标识值。范围是一个模块:存储过程,触发器,函数因此,如果两个语句属于同一存储过程,函数或批处理,则它们在同一范围内。“
INSERT INTO Entrys ('Name','Description') VALUES ('abc','xyz');
SELECT SCOPE_IDENTITY()
答案 3 :(得分:2)
在SQL Server中,您还可以在INSERT语句中使用OUTPUT子句:
INSERT INTO Entrys('Name', 'Description')
OUTPUT Inserted.EntryID
VALUES ('abc','xyz')
这将输出新创建的IDENTITY字段值。
答案 4 :(得分:0)
正如@marc_s对SQL Server所说,在PostgreSQL中,您可以使用以下方法获得相同的行为:
INSERT INTO Entrys ('Name','Description')
VALUES ('abc','xyz')
RETURNING EntryID;
当您插入多个元组并且希望为每个行生成所有ID时,RETURNING也非常有用。