Nig*_*ght 7 sql-server stored-procedures
假设我有两张桌子.第一个表的主键是另一个表的外键.
表Member的主键是外键Member_detail.
因此,当我Member使用存储过程在表中插入一行时,我需要获取要添加到Member_detail表中的主键值.
我使用的一种方法是:
SELECT Max(MemberID)
FROM Member
Run Code Online (Sandbox Code Playgroud)
然后将它传递Memberid给我的Member_detail表,但是在下面的帖子中,我读到该Max功能不建议我应该使用SCOPE_IDENTITY,但我不知道如何使用它.
谁能给我一些例子?
sti*_*net 10
SCOPE_IDENTITY 返回插入同一范围内的标识列的最后一个标识值.
鉴于你有2个表:
Member: id int (primaryKey), name varchar
Member_Detail: id int (primaryKey), pk int (foreignKey), name varchar
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
DECLARE @MemberId int
INSERT INTO Member (name) VALUES ('hello');
SET @MemberId = SCOPE_IDENTITY()
INSERT INTO Member_Detail (pk, name) VALUES (@MemberId, 'hello again')
Run Code Online (Sandbox Code Playgroud)
MSDN参考:
返回插入同一范围内的标识列的最后一个标识值.范围是一个模块:存储过程,触发器,函数或批处理.因此,如果两个语句在同一存储过程,函数或批处理中,则它们在同一范围内.
| 归档时间: |
|
| 查看次数: |
20553 次 |
| 最近记录: |