在我正在设置的SQL Server数据库中,有几个1到多个表我想创建"很多"插入父记录后的表记录,仅插入自动生成的ID值和父记录中的另一个值。
例如:
我已经拥有:
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值并改用它们?
答案 0 :(得分:0)
我不能在没有你的桌子定义的情况下测试这个,但我认为你是现场的。
根据所涉及的表数量,我会考虑使其动态化。表格的数量必须很高才能使它值得付出努力。
根据评论编辑: 您可以通过使用系统视图来查找与哪些表相关的动态,并根据元数据动态生成Sql。这里有几篇文章可以帮助您入门。
https://msdn.microsoft.com/en-us/library/ms186778.aspx
https://msdn.microsoft.com/en-us/library/ms177862.aspx
基本结构是为每个相关表创建一个游标循环,并为相关表中的每一列创建一个内部游标循环。您可以使用与问题中定义的格式相同的格式动态构建sql语句。