我想從父表插入數據到子表只有一個sql查詢。在同一時間插入數據到父表和子表sql
我有兩個表,用戶表和用戶信息表
用戶表 - 父表
- USER_ID - PK
- 用戶名
- 密碼
的UserInfo表 - 兒童表
- USER_ID - FK到父表
- 姓氏
- 姓名 等...
我用兩個插入之前有相同的USER_ID。有沒有辦法在單個查詢中執行它?
我想從父表插入數據到子表只有一個sql查詢。在同一時間插入數據到父表和子表sql
我有兩個表,用戶表和用戶信息表
用戶表 - 父表
的UserInfo表 - 兒童表
我用兩個插入之前有相同的USER_ID。有沒有辦法在單個查詢中執行它?
你可以用一個視圖來代替插入觸發器。我不是說這是最好的主意,但你可以。另外,你可以把它包裝在你傳遞用戶名,密碼,名字,姓氏等的存儲過程中,proc將爲你處理兩個(或多個)插入。
謝謝。我不知道該怎麼做,但我會檢查一些教程。你能建議我在哪裏可以找到一個很好的教程呢? – rrr
以下是CREATE TRIGGER的文檔:http://msdn.microsoft.com/en-us/library/ms189799.aspx。 –
創建接收將是適合需要的所有參數的存儲過程,你可以嘗試:
CREATE PROCEDURE sp_insertAll @parameter1 parameterType, @parameter2 parameterType, @etc parameterType
AS
/*DO YOUR INSERTS HERE*/
GO
,然後執行它:
EXEC sp_insertAll @parameter1 = value, @parameter2 = value, @etc = value
您可以創建一個SP,並通過所有參數。
例如,
CREATE PROCEDURE SP_InsertMasterDetail
@param1 <datatype>
@param2 <datatype>
..................
@param1 <datatype>
AS
DECLARE @p_id int
--SETP 1 -- INSERT TO MASTER_TABLE
INSERT INTO MASTER_TABLE()
VALUES (..........)
SELECT @p_id= SCOPE_IDENTITY()
--STEP 2 -- INSERT TO DETAILS_TABLE
INSERT INTO DETAILS_TABLE()
VALUES(@p_id,.................)
然後執行它像,
EXEC SP_InsertMasterDetail param1,param2,param3,......
我覺得OUTPUT子句在這種情況下的理想選擇。 你一次插入很多記錄。 http://technet.microsoft.com/en-us/library/ms177564.aspx – KumarHarsh