我有一个程序,我在员工表中插入记录。使用@@identity 获得empid?当这个程序将被多个用户同时调用时,它可能会返回同时插入的其他员工的身份。因为系统没有对身份进行锁定?
--code --identity on for empid column
insert into employee (name) values ('sahil'); 返回@@身份
参考sql server 2005:使用@@identity 是否安全? 锁定身份问题
我有一个程序,我在员工表中插入记录。使用@@identity 获得empid?当这个程序将被多个用户同时调用时,它可能会返回同时插入的其他员工的身份。因为系统没有对身份进行锁定?
--code --identity on for empid column
insert into employee (name) values ('sahil'); 返回@@身份
参考sql server 2005:使用@@identity 是否安全? 锁定身份问题
您应该改用 SCOPE_IDENTITY() 。但是,@@IDENTITY 指的是当前连接,因此其他用户不会影响您,但还有其他问题需要考虑。
更多信息在这里。
@@identity 使用起来不安全。如果表有一个触发器,该触发器插入到另一个表,其标识是将返回的值。永远不要使用它来获取您刚刚插入的 idnetity 值。您可能认为我现在没有触发器,但您永远不知道什么时候可以添加触发器,并且您可能需要很长时间才能意识到您的数据已经无可救药地混乱了。