是否可能使用ident\u current复制子表中的外键?

p5cysglq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(241)

我已经编写了一个过程,将数据插入到一个过程父级和子级的两个表中。
如果一条记录被插入父表,那么它的主键应该作为外键插入到第二个表中。
所以我做的是

Declare @HeaderID int
            Set @HeaderID= IDENT_CURRENT('EQ') --Latest ID

因此,多个人连接到同一个数据库并使用此过程。
现在,我担心的是主键不会被复制?正确的?如果用户a向父表中插入数据,例如id=1,那么对于同样插入记录的用户b,将得到id=2或其他值。正确的?
我的朋友说应该是scope\u identity,但我不同意,因为这会记录任何表的主键。

yks3o0rb

yks3o0rb1#

ident\u current返回在任何会话和任何作用域中为特定表生成的最后一个标识值。
@@identity返回为当前会话中所有作用域中的任何表生成的上一个identity值。
scope\u identity返回为当前会话和当前作用域中的任何表生成的最后一个标识值。
使用ident\u current预测下一个生成的标识值时要小心。由于其他会话执行的插入,实际生成的值可能与ident\u current plus ident\u incr不同。
更好的选择是使用scope\u identity()
当前参考标识(transact-sql)

相关问题