Sam*_*rty 28 sql sqlite row insert primary-key
我有点诙谐的问题.比如说,我在一个存在主键的表中插入了一些包含一些数据的行.如何"选择"刚刚插入的行的主键?
我应该更具体,并提到我目前正在使用SQLite.
Mic*_*son 50
对于MS SQL Server:
SCOPE_IDENTITY() 将返回您当前范围内的最后生成的标识值:
SELECT SCOPE_IDENTITY() AS NewID
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 34
对于SQL Server 2005及更高版本,无论您的主键是什么类型,您始终可以使用该OUTPUT子句返回插入的值:
INSERT INTO dbo.YourTable(col1, col2, ...., colN)
OUTPUT Inserted.PrimaryKey
VALUES(val1, val2, ....., valN)
Run Code Online (Sandbox Code Playgroud)
对于MySQL,使用LAST_INSERT_ID()
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
您还应该能够启动事务,插入行,并使用一些具有您刚刚插入的唯一值的字段(如时间戳或guid)来选择行.这应该适用于任何支持事务的RDBMS,只要你有一个很好的唯一字段来选择行.
SQL Server:
您可以使用@@IDENTITY。在插入语句之后,可以运行:
select @@identity
Run Code Online (Sandbox Code Playgroud)
这将为您提供刚插入的记录的主键。如果您打算以后使用它,建议您保存它:
set @MyIdentity = @@identity
Run Code Online (Sandbox Code Playgroud)
如果您在存储过程中使用此功能,并希望在应用程序中重新使用它,请确保没有任何问题。
| 归档时间: |
|
| 查看次数: |
66230 次 |
| 最近记录: |