我有3個表和列。例如:綠色(用戶ID,名稱,地址),紅色(用戶ID,臨時地址),藍色(用戶ID,工作區)。一個存儲過程中插入一個表和檢索ID和插入多個表
我想將數據插入到綠色,而用戶ID是自動遞增的int和唯一ID。插入後這些細節要檢索用戶ID和插入紅色和藍色表在一個存儲過程
注意:此示例表是顯示一個示例場景,而不是對於真實情況......
我有3個表和列。例如:綠色(用戶ID,名稱,地址),紅色(用戶ID,臨時地址),藍色(用戶ID,工作區)。一個存儲過程中插入一個表和檢索ID和插入多個表
我想將數據插入到綠色,而用戶ID是自動遞增的int和唯一ID。插入後這些細節要檢索用戶ID和插入紅色和藍色表在一個存儲過程
注意:此示例表是顯示一個示例場景,而不是對於真實情況......
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;
使用SCOPE_IDENTITY()在用戶的變量中插入值,然後在紅/藍表中使用該變量值。
SQL有一個非常好的輸出功能。
在這種情況下,具有自動遞增int或默認值指定標識列(如NEWID()),執行插入,然後使用輸出輸入您的其他輸入查詢。
輸出表有所有的值剛剛插入,並且可以查詢,就像任何其他表,以區別在於它有立即可用的新的價值後提交。
INSERT INTO
tblInsertedID(ID)
SELECT * FROM
(INSERT
INTO tblDir(Dir)
OUTPUT inserted.ID
VALUES ('C:\NewDir\')
) InnerTable
如何使用'OUTPUT'來隨後插入兩個不同的表?你不能,你需要的東西輸出到表變量或,如果原來的刀片是一個單行,只使用SCOPE_IDENTITY()和一個單一的變量。 – 2012-07-10 15:02:21