Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server 2005:使用@@identity安全吗?_Sql Server_Identity_Unsafe - Fatal编程技术网

Sql server sql server 2005:使用@@identity安全吗?

Sql server sql server 2005:使用@@identity安全吗?,sql-server,identity,unsafe,Sql Server,Identity,Unsafe,我有一个在employee表中插入记录的过程。是否使用@identity获取empid?当多个用户同时调用此过程时,可能会返回同时插入的其他员工的身份。因为系统没有锁定身份 --代码 --empid列的标识已打开 插入员工(姓名)值(“sahil”); 返回@标识 提及 对于身份锁定问题您应该改用SCOPE_identity()。然而,@ @标识指的是当前连接,因此其他用户不会影响您,但还有其他问题需要考虑。 详细信息。@@identity使用起来不安全。如果该表有一个触发器,该触发器插入一个不

我有一个在employee表中插入记录的过程。是否使用@identity获取empid?当多个用户同时调用此过程时,可能会返回同时插入的其他员工的身份。因为系统没有锁定身份

--代码 --empid列的标识已打开
插入员工(姓名)值(“sahil”); 返回@标识

提及
对于身份锁定问题

您应该改用SCOPE_identity()。然而,@ @标识指的是当前连接,因此其他用户不会影响您,但还有其他问题需要考虑。
详细信息。

@@identity使用起来不安全。如果该表有一个触发器,该触发器插入一个不同的表,该表的标识是将返回的值。永远不要使用它来获取刚刚插入的ID值。你可能会想,我现在没有触发器,但你永远不知道什么时候可能会添加触发器,你可能会花很长时间才意识到你的数据被彻底弄乱了

scope_identity()中有一个已知的bug,请注意:@KM,该bug影响的人远远少于使用@identity的人受到错误标识的触发器影响的人。OUtput子句是最好的解决方案,但不确定他的SQl server版本是否有。@HLGEM,是的(回到2009年)谁知道他们运行的是哪个版本,SQl server 2005确实支持
OUtput