如何在SQL中检索插入行的ID?
Column | Type
--------|--------------------------------
ID | * Auto-incrementing primary key
Name |
Age |
Run Code Online (Sandbox Code Playgroud)
insert into users (Name, Age) values ('charuka',12)
Run Code Online (Sandbox Code Playgroud)
Ric*_*iwi 37
在MySQL中:
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
在SQL Server中:
SELECT SCOPE_IDENTITY();
Run Code Online (Sandbox Code Playgroud)
在Oracle中:
SELECT SEQNAME.CURRVAL FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL中:
SELECT lastval();
Run Code Online (Sandbox Code Playgroud)
(编辑:lastval是any,currval需要命名序列) 注意:lastval()返回会话分配的最新序列值,与其他会话中发生的事件无关.
mar*_*c_s 11
在SQL Server中,您可以(除了已经存在的其他解决方案):
INSERT INTO dbo.Users(Name, Age)
OUTPUT INSERTED.ID AS 'New User ID'
VALUES('charuka', 12)
Run Code Online (Sandbox Code Playgroud)
OUTPUT在执行插入,更新,删除时,该子句非常方便,您可以返回任何列 - 而不仅仅是自动递增的ID列.
阅读SQL Server联机丛书中有关OUTPUT子句的更多信息.
小智 3
在 Oracle 和 PostgreSQL 中,您可以执行以下操作:
INSERT INTO some_table(姓名,年龄) 价值观 (“查鲁卡”,12) 返回ID
通过 JDBC 执行此操作时,您还可以通过在运行 INSERT 后调用 getGenerateKeys() 以跨 DBMS 的方式执行此操作(无需 RETURNING)