2014-02-06 50 views
0

我想從父表插入數據到子表只有一個sql查詢。在同一時間插入數據到父表和子表sql

我有兩個表,用戶表和用戶信息表

用戶表 - 父表

  • USER_ID - PK
  • 用戶名
  • 密碼

的UserInfo表 - 兒童表

  • USER_ID - FK到父表
  • 姓氏
  • 姓名 等...

我用兩個插入之前有相同的USER_ID。有沒有辦法在單個查詢中執行它?

+0

我覺得OUTPUT子句在這種情況下的理想選擇。 你一次插入很多記錄。 http://technet.microsoft.com/en-us/library/ms177564.aspx – KumarHarsh

回答

0

你可以用一個視圖來代替插入觸發器。我不是說這是最好的主意,但你可以。另外,你可以把它包裝在你傳遞用戶名,密碼,名字,姓氏等的存儲過程中,proc將爲你處理兩個(或多個)插入。

+0

謝謝。我不知道該怎麼做,但我會檢查一些教程。你能建議我在哪裏可以找到一個很好的教程呢? – rrr

+0

以下是CREATE TRIGGER的文檔:http://msdn.microsoft.com/en-us/library/ms189799.aspx。 –

0

創建接收將是適合需要的所有參數的存儲過程,你可以嘗試:

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 
0

您可以創建一個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,......