【问题标题】:Insert data to parent table and child table at thesame time sql同时向父表和子表插入数据sql
【发布时间】:2014-02-06 12:17:25
【问题描述】:

我想用一个 sql 查询将数据从父表插入到子表。

我有两个表,users 表和 userInfo 表

用户表 - 父表

  • user_id - PK
  • 用户名
  • 密码

UserInfo 表 - 子表

  • user_id - FK 到父表
  • 姓氏
  • 名字 等等……

我之前使用两个 INSERT 来获得相同的 user_id。有没有办法在一个查询中做到这一点?

【问题讨论】:

标签: sql-server


【解决方案1】:

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

【讨论】:

【解决方案2】:

创建一个接收所有所需参数的存储过程是合适的,您可以尝试:

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

【讨论】:

    【解决方案3】:

    您可以创建一个 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,......
    

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 1970-01-01
      • 2016-11-07
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多