2014-02-06 52 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,......