Sha*_*ahu 3 stored-procedures sql-server-2005 primary-key insert-update
在SQL Server 2005中,我使用存储过程将一行插入表中,我想在插入该行后立即获取新的主键值.我使用以下方法来获取插入行后的主键值
Create Proc Sp_Test
@testEmail varchar(20)=null,-- Should be Unique
@testName varchar(20)=null -- Should be Unique
as
begin
insert into tableTest (testUserEmail,testUserName)values (@testValue,@testName)
select MAX(ID) from tableTest --ID is Primary Key
Run Code Online (Sandbox Code Playgroud)
- 要么
select ID from tableTest where testUserEmail =@testValue and testUserName = @testName
Run Code Online (Sandbox Code Playgroud)
- 要么
select SCOPE_IDENTITY() as ID
end
Run Code Online (Sandbox Code Playgroud)
请建议我哪种方法更好地执行所描述的任务.
无论如何 - 使用SCOPE_IDENTITY()
if你的ID
专栏是INT IDENTITY
- 只会给你正确的结果!
MAX(ID)
如果您有多个客户端几乎同时插入行,那么第一种方法将会非常失败 - 您将得到错误的结果.不要用那个!
如果已存在具有相同电子邮件和名称值的另一个条目,则第三种方法可能会失败.
另外,作为旁注:你永远不应该使用sp_
你的前缀!这是一个Microsoft保留的前缀,在性能方面有缺点 - 使用其他东西.
归档时间: |
|
查看次数: |
9842 次 |
最近记录: |