在存储过程中插入其他表的列中的值的外键列

问题描述:

我有两个表“用户信息”和“用户登录”,它们都有一个ID列,但用户信息表中的ID列是一个标识类型,用户登录表的ID列引用用户信息表的ID。在存储过程中插入其他表的列中的值的外键列

这是我的存储过程,它同时向两个表中插入值。

CREATE PROCEDURE [dbo].[InsertUser] 
@fname varchar(50), 
@lname varchar(50), 
@gender int, 
@bday date, 
@address varchar(max), 
@city varchar(50), 
@zip nvarchar(50), 
@country varchar(50), 
@status int, 
@telhome varchar(50), 
@teloff varchar(50), 
@mobile varchar(50), 

@login varchar(50), 
@pass varchar(50), 
@email varchar(50), 
@pin varchar(50) 

AS

INSERT INTO UserInfo 
(
Firstname, 
Lastname, 
Gender, 
Birthday, 
[Address], 
City, 
Zip, 
Country, 
Civil, 
HomeTelephone, 
OfficeTelephone, 
MobileTelephone) 

VALUES (@fname, @lname, @gender, 
@bday, @address, @city, @zip, @country, @status, @telhome, @teloff, @mobile) 

INSERT INTO UserLogin 
(
ID, 
[Login], 
[Password], 
Email, 
TransPIN 
) 
VALUES (***THE ID OF NEW UserInfo row**, @login, @pass, @email, @pin) 

我的问题是我得从用户信息表中新插入的行生成在用户登录表要插入的ID。

+0

我试过“从插入”的方法,但它不工作在这里 – ejmtv

分配最后插入编号为变量 “SET @lastInsertedId = SCOPE_IDENTITY()”,并使用第二insert语句这个变量。

CREATE PROCEDURE [dbo].[InsertUser] 
@fname varchar(50), 
@lname varchar(50), 
@gender int, 
@bday date, 
@address varchar(max), 
@city varchar(50), 
@zip nvarchar(50), 
@country varchar(50), 
@status int, 
@telhome varchar(50), 
@teloff varchar(50), 
@mobile varchar(50), 

@login varchar(50), 
@pass varchar(50), 
@email varchar(50), 
@pin varchar(50) 
AS 
DECLARE @lastInsertedId INT; 
INSERT INTO UserInfo 
(
Firstname, 
Lastname, 
Gender, 
Birthday, 
[Address], 
City, 
Zip, 
Country, 
Civil, 
HomeTelephone, 
OfficeTelephone, 
MobileTelephone) 

VALUES (@fname, @lname, @gender, 
@bday, @address, @city, @zip, @country, @status, @telhome, @teloff, @mobile) 

SET @lastInsertedId = SCOPE_IDENTITY() 

INSERT INTO UserLogin 
(
ID, 
[Login], 
[Password], 
Email, 
TransPIN 
) 
VALUES (@lastInsertedId, @login, @pass, @email, @pin)