Sql server SQL Server:插入多个表后触发
在我正在设置的SQL Server数据库中,有几个1对多的表,我希望在插入父记录后创建“多”表记录,只插入自动生成的ID值和父记录中的另一个值 例如: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 [
- 表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多个父表,您可以查询系统视图以查找外键约束,从而找到需要插入“默认行”的表。