SQL 服务器:在未插入的行上触发
SQL Server : trigger on not inserted row
我有两个 table。我在 Table A 上定义了一个触发器,当一行插入 Table A 时更新 Table B。
我想防止插入 table A 并允许在 table B 中更新,如果具有特定值的数据被发送到 Table A。
谁能帮帮我?
使用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
我有两个 table。我在 Table A 上定义了一个触发器,当一行插入 Table A 时更新 Table B。
我想防止插入 table A 并允许在 table B 中更新,如果具有特定值的数据被发送到 Table A。
谁能帮帮我?
使用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