我有一个程序,我在员工table.nad中使用@@ identity来插入记录?当多个用户同时调用此过程时,可能会返回同时插入的其他员工的身份。因为系统没有锁定身份?
- 代码 - 对于empid列的身份 插入员工(姓名)值('sahil'); return @@ identity
答案 0 :(得分:8)
您应该使用SCOPE_IDENTITY()代替。但是,@@ IDENTITY是指当前连接,因此其他用户不会对您产生影响,但还有其他问题需要考虑。
更多信息here。
答案 1 :(得分:3)
@@ identity不安全使用。如果表具有一个插入到不同表的触发器,其标识是将返回的值。切勿使用它来获取刚刚插入的idnetity值。您可能认为我现在没有触发器,但您永远不知道何时可以添加一个触发器,您可以花很长时间才能意识到您的数据无可救药地被搞砸了。