SQL Server存储过程在多个表中插入

时间:2017-05-05 02:10:01

标签: sql sql-server

我有2个表,custlogincustinfo

custlogin:

custid int primary key auto notnull
custusename varchar(25)
custpassword varchar(50)

custinfo:

custid foriegnkey custlogin.custid ondelete set NULL
custfirstname varchar(25)
custlastname  varchar(25)
custaddress   varchar(100)

我想写一个存储过程,它将插入到两个表中

更确切地说,使用custusername custpassword插入custlogin,这将返回custid以用作custinfo的外键。

我搜索了很多,但我找不到任何解决方案。

2 个答案:

答案 0 :(得分:0)

这将是下面的内容。在这种情况下,您可以使用 SCOPE_IDENTITY()来获取包含此存储过程的作用域的最后一个自动生成的ID:

create procedure NameOfYourProcedureHere
as
begin

    insert into custlogin(custusename, custpassword) 
        values ('','') -- put values here (from parameters?)

    insert into custinfo(custid, custfirstname, custlastname, custaddress)
        values (SCOPE_IDENTITY(), '', '', '')  -- put other values here (from parameters?)

end

答案 1 :(得分:0)

如果您向custlogin插入一行,则可以使用@@IDENTITYScope_identity()来获取新的插入ID。

如果您插入多行,请使用OUTPUT获取多个新插入的ID。

您可以在此处看到一个示例:http://rextester.com/TWXO81648