Sql server sql server 2005:使用@@identity安全吗?
我有一个在employee表中插入记录的过程。是否使用@identity获取empid?当多个用户同时调用此过程时,可能会返回同时插入的其他员工的身份。因为系统没有锁定身份 --代码 --empid列的标识已打开Sql server sql server 2005:使用@@identity安全吗?,sql-server,identity,unsafe,Sql Server,Identity,Unsafe,我有一个在employee表中插入记录的过程。是否使用@identity获取empid?当多个用户同时调用此过程时,可能会返回同时插入的其他员工的身份。因为系统没有锁定身份 --代码 --empid列的标识已打开 插入员工(姓名)值(“sahil”); 返回@标识 提及 对于身份锁定问题您应该改用SCOPE_identity()。然而,@ @标识指的是当前连接,因此其他用户不会影响您,但还有其他问题需要考虑。 详细信息。@@identity使用起来不安全。如果该表有一个触发器,该触发器插入一个不
插入员工(姓名)值(“sahil”); 返回@标识 提及
对于身份锁定问题您应该改用SCOPE_identity()。然而,@ @标识指的是当前连接,因此其他用户不会影响您,但还有其他问题需要考虑。
详细信息。@@identity使用起来不安全。如果该表有一个触发器,该触发器插入一个不同的表,该表的标识是将返回的值。永远不要使用它来获取刚刚插入的ID值。你可能会想,我现在没有触发器,但你永远不知道什么时候可能会添加触发器,你可能会花很长时间才意识到你的数据被彻底弄乱了 scope_identity()中有一个已知的bug,请注意:@KM,该bug影响的人远远少于使用@identity的人受到错误标识的触发器影响的人。OUtput子句是最好的解决方案,但不确定他的SQl server版本是否有。@HLGEM,是的(回到2009年)谁知道他们运行的是哪个版本,SQl server 2005确实支持
OUtput