Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:插入多个表后触发_Sql Server_Tsql_Triggers_Insert - Fatal编程技术网

Sql server SQL Server:插入多个表后触发

Sql server SQL Server:插入多个表后触发,sql-server,tsql,triggers,insert,Sql Server,Tsql,Triggers,Insert,在我正在设置的SQL Server数据库中,有几个1对多的表,我希望在插入父记录后创建“多”表记录,只插入自动生成的ID值和父记录中的另一个值 例如: 表1(父项):Auto_ID、Name、createby、createdatetime 表2(子项):Auto_ID、Parent_Auto_ID、Col1、Col2、createby、createdatetime 表3(子项):父项自动ID、Col1、createby、createdatetime 我已经: CREATE TRIGGER [

在我正在设置的SQL Server数据库中,有几个1对多的表,我希望在插入父记录后创建“多”表记录,只插入自动生成的ID值和父记录中的另一个值

例如:

  • 表1(父项):Auto_ID、Name、createby、createdatetime
  • 表2(子项):Auto_ID、Parent_Auto_ID、Col1、Col2、createby、createdatetime
  • 表3(子项):父项自动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

这是正确的语法吗?还是我需要声明一个单独的temp变量并存储iPamuseId和createby值,然后改用它们?

如果没有您的表定义,我无法测试这一点,但我认为您是正确的

根据所涉及的表的数量,我会考虑使这一动态。不过,为了使这项工作值得,表的数量必须很高

根据评论: 您可以通过使用系统视图来确定哪些表是相关的,并根据元数据动态生成Sql,从而使其成为动态的。这里有几篇文章让你开始学习


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

如果没有表定义,我无法测试这一点,但我认为您是正确的

根据所涉及的表的数量,我会考虑使这一动态。不过,为了使这项工作值得,表的数量必须很高

根据评论: 您可以通过使用系统视图来确定哪些表是相关的,并根据元数据动态生成Sql,从而使其成为动态的。这里有几篇文章让你开始学习


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

好的,我需要为每个1到多个父表动态构建3个子表。我不确定如何使其动态化。如果您有3个父表和3个子表,我将坚持您的建议。如果您有30多个父表,您可以查询系统视图以查找外键约束,以查找需要插入“默认行”的表。好的,平均每1到多个父表中有3个子表,我需要这样做。我不确定如何使其动态化。如果您有3个父表和3个子表,我将坚持您的建议。如果有30多个父表,您可以查询系统视图以查找外键约束,从而找到需要插入“默认行”的表。