SQL Server:插入多个表

时间:2016-05-13 21:15:56

标签: sql-server tsql triggers insert

在我正在设置的SQL Server数据库中,有几个1到多个表我想创建"很多"插入父记录后的表记录,仅插入自动生成的ID值和父记录中的另一个值。

例如:

  • 表1(父级):Auto_ID,名称,createby,createdatetime
  • 表2(子):Auto_ID,Parent_Auto_ID,Col1,Col2,createby,createdatetime
  • 表3(子):Parent_Auto_ID,Col1,createby,createdatetime

我已经拥有:

CREATE TRIGGER [dbo].[ipamuserInsert] 
ON [dbbo].[ipamuser]
FOR INSERT
AS
    SET NOCOUNT ON

    INSERT INTO [dbo].[ipamuserdefault]
        (ipamuserID, homepage, createby, createdatetime)
    VALUES
        SELECT 
            ipamuserID,
            NULL,
            createby,
            GETDATE()
        FROM 
            inserted

    INSERT INTO [dbo].[ipamextlink]
        (ipamuserID, link, createby, GETDATE())
    VALUES
        SELECT
            ipamuserID, null, createby, GETDATE()
        FROM
            inserted
    GO

这是正确的语法,还是我需要声明一个单独的临时变量并存储ipamuserID和createby值并改用它们?

1 个答案:

答案 0 :(得分:0)

我不能在没有你的桌子定义的情况下测试这个,但我认为你是现场的。

根据所涉及的表数量,我会考虑使其动态化。表格的数量必须很高才能使它值得付出努力。

根据评论编辑: 您可以通过使用系统视图来查找与哪些表相关的动态,并根据元数据动态生成Sql。这里有几篇文章可以帮助您入门。

https://msdn.microsoft.com/en-us/library/ms186778.aspx

https://msdn.microsoft.com/en-us/library/ms177862.aspx

基本结构是为每个相关表创建一个游标循环,并为相关表中的每一列创建一个内部游标循环。您可以使用与问题中定义的格式相同的格式动态构建sql语句。