2017-06-22 70 views
0

我有兩個表「用戶信息」和「用戶登錄」,它們都有一個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

回答

2

分配最後插入編號爲變量 「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) 
相關問題