2012-07-10 82 views
0

我有3個表和列。例如:綠色(用戶ID,名稱,地址),紅色(用戶ID,臨時地址),藍色(用戶ID,工作區)。一個存儲過程中插入一個表和檢索ID和插入多個表

我想將數據插入到綠色,而用戶ID是自動遞增的int和唯一ID。插入後這些細節要檢索用戶ID和插入紅色和藍色表在一個存儲過程

注意:此示例表是顯示一個示例場景,而不是對於真實情況......

回答

0
DECLARE @userID INT; 
INSERT dbo.Green(Name, Address) SELECT @name, @address; 
SELECT @userID = SCOPE_IDENTITY(); 
INSERT dbo.Red(UserID, TemporaryAddress) SELECT @userID, @something; 
INSERT dbo.Blue(UserID, WorkPlace) SELECT @userID, @something_else; 
0

使用SCOPE_IDENTITY()在用戶的變量中插入值,然後在紅/藍表中使用該變量值。

1

SQL有一個非常好的輸出功能。

在這種情況下,具有自動遞增int或默認值指定標識列(如NEWID()),執行插入,然後使用輸出輸入您的其他輸入查詢。

輸出表有所有的值剛剛插入,並且可以查詢,就像任何其他表,以區別在於它有立即可用的新的價值後提交。

INSERT INTO 
tblInsertedID(ID) 
SELECT * FROM 
    (INSERT 
    INTO tblDir(Dir) 
    OUTPUT inserted.ID 
    VALUES ('C:\NewDir\') 
    ) InnerTable 
+0

如何使用'OUTPUT'來隨後插入兩個不同的表?你不能,你需要的東西輸出到表變量或,如果原來的刀片是一個單行,只使用SCOPE_IDENTITY()和一個單一的變量。 – 2012-07-10 15:02:21

相關問題