【问题标题】:using @@identity afer insert插入后使用@@identity
【发布时间】:2011-02-07 22:22:00
【问题描述】:

我有一个带有 sql server 的插入 sql,然后直接调用 select @@identity,我正在尝试将身份 ID 与存储过程一起使用,这是否可能

例如

insert into ...
select @@identity

EXEc add 'ss' @@identity

谢谢 一个

编辑---

我基本上想使用我现在得到的 id 的值

选择 SCOPE_IDENTITY() ;

在插入之后直接在查询中使用。

【问题讨论】:

标签: sql insert identity


【解决方案1】:

是的,这是可能的,尽管您最好使用SCOPE_IDENTITY()

请参阅this SO 问题,了解获取插入行标识的最佳方法。

【讨论】:

    【解决方案2】:

    正在回答 cmets 中的(现已删除的)问题...

    可以在存储过程调用的参数列表中直接使用@@IDENTITY。对于SCOPE_IDENTITY()(如果稍后将触发器添加到表中,您应该使用它来避免问题)这种语法是不允许的,您需要使用如下中间变量。

    declare @id int
    
    insert into ...
    
    set @id = SCOPE_IDENTITY() 
    
    EXEC AddEmp2 0,@id
    

    【讨论】:

    • 谢谢,这行得通..我试过了,但选择@@identity..但它没有用。 scope_identity 是要走的路。
    • @Alessandro - 是的,SELECT @@IDENTITY 行不通,你只能使用 EXEC AddEmp2 0,@@IDENTITY(不过这只是学术兴趣!)
    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    相关资源
    最近更新 更多