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