【发布时间】:2015-02-21 08:26:09
【问题描述】:
我有两张桌子。我在表 A 上定义了一个触发器,当将一行插入表 A 时,它会更新表 B。
如果将具有特定值的数据发送到表 A,我想阻止插入表 A 并允许在表 B 中更新。
谁能帮帮我?
【问题讨论】:
-
代替插入
标签: sql-server triggers insert
我有两张桌子。我在表 A 上定义了一个触发器,当将一行插入表 A 时,它会更新表 B。
如果将具有特定值的数据发送到表 A,我想阻止插入表 A 并允许在表 B 中更新。
谁能帮帮我?
【问题讨论】:
标签: sql-server triggers insert
使用INSTEAD OF触发器:
CREATE TABLE [dbo].[Test1] ( [id] [INT] NULL )
ON [PRIMARY]
GO
CREATE TABLE [dbo].[Test2] ( [id] [INT] NULL )
ON [PRIMARY]
GO
CREATE TRIGGER trInsert ON dbo.Test1
INSTEAD OF INSERT
AS
BEGIN
--Insert particular data to Test2
INSERT INTO dbo.Test2
( id )
SELECT *
FROM Inserted
WHERE id = 2
--Insert the rest of data to Test1
INSERT INTO dbo.Test1
( id )
SELECT *
FROM Inserted
WHERE id <> 2
END
GO
INSERT INTO dbo.Test1
( id )
VALUES ( 1 ),
( 2 ),
( 3 )
SELECT *
FROM dbo.Test1
SELECT *
FROM dbo.Test2
输出:
Test1:
id
1
3
Test2:
id
2
【讨论】:
IF CONDITION THEN INSERT INTO B ELSE INSERT INTO A。