Reputation: 1237
trying to create a trigger which should insert data into three tables upon insertion of its parent table.
Diagram
Table_1
Table_2
Table_3
Table_4
And my object explorer
The code block I'm trying to use is
USE [demo1]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[autoupdate]
ON [dbo].[Table_1]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.Table_2(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_2 t2 WHERE t2.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
END
GO
It works and updates the Table_2
with the data taken from ONEID
. Now How can I modify this to insert ONEID
to rest of the tables?
For Dave
INSERT INTO dbo.Table_2(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_2 t2 WHERE t2.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
INSERT INTO dbo.Table_3(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_2 t2 WHERE t2.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
INSERT INTO dbo.Table_4(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_2 t2 WHERE t2.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
Upvotes: 0
Views: 29
Reputation: 6771
Like this:
INSERT INTO dbo.Table_2(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_2 t2 WHERE t2.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
INSERT INTO dbo.Table_3(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_3 t3 WHERE t3.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
INSERT INTO dbo.Table_4(ONEID)
SELECT ONEID FROM INSERTED i
WHERE NOT EXISTS (SELECT 1 FROM dbo.Table_4 t4 WHERE t4.ONEID = i.ONEID)
AND i.ONEID IS NOT NULL;
Upvotes: 1