同时在sql中将数据插入父表和子表

时间:2014-02-06 01:47:39

标签: sql-server

我想通过只有一个sql查询将父表中的数据插入到子表中。

我有两个表,即users表和userInfo表

用户表 - 父表

  • user_id - PK
  • 用户名
  • 密码

UserInfo表 - 子表

  • user_id - FK到父表
  • 名字
  • 姓名 等...

我之前使用两个INSERT来拥有相同的user_id。有没有办法在单个查询中执行此操作?

3 个答案:

答案 0 :(得分:0)

您可以使用带有而不是插入触发器的视图来执行此操作。我不是说这是最好的主意,但你可以。此外,您可以将它包装在您传递用户名,密码,名字,姓氏等的存储过程中,proc将为您处理两个(或更多)插入。

答案 1 :(得分: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

答案 2 :(得分: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,......