我创建了两个表:
Table
tblStaff
with columnsid
(primary key, auto increment),name
,age
,address
Table
tblRoleOfStaff
with columnsid
(primary key, auto increment),StaffId
(foreign key totblStaff
),RoleId
我有创建具有现有角色的新员工的表格。要插入的数据样本:
(name, age, address, roleId) = ('my name',20,'San Jose', 1)
我想在 SQL Server 2014 中编写一个存储过程,将新员工插入到 tblStaff
并将新记录插入到 tbleRoleOfStaff
中 staffId
我应该怎么办?
如果我的问题与其他问题重复,我很抱歉。我对 SQL 比较陌生。谢谢你的帮助。
原文由 Ca Pham Van 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 SCOPE_IDENTITY() 第二次插入
tblRoleOfStuff
在StaffId
的地方。喜欢:编辑
关于这个答案的评论太多了,所以我想给出一个解释。
如果 OP 保证他不会使用他可能使用的任何触发器
@@IDENTITY
(不好的做法),这足以满足他的需要,但最好的做法是使用SCOPE_IDENTITY()
。SCOPE_IDENTITY()
将保证您从当前操作中获得身份,而不是从另一个连接或最后一个处理的。为什么不
IDENT_CURRENT
?因为所以你让最后一个范围,但不是当前的。是的,OP 也可以使用它,但在这种情况下这是一个不好的做法(比如只使用
@@IDENTITY
)使用
OUTPUT
确实是一种很好的做法,但对于一个身份来说过于复杂。如果 OP 需要一次处理多于一行 - 是的,他需要OUTPUT
。