SQL触发器

来源:互联网 发布:java语言发展史 编辑:程序博客网 时间:2024/05/17 23:19

触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。

CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
        [ WITH APPEND ]
        [ NOT FOR REPLICATION ]
        AS
        [ { IF UPDATE ( column )
            [ { AND | OR } UPDATE ( column ) ]
                [ ...n ]
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                { comparison_operator } column_bitmask [ ...n ]
        } ]
        sql_statement [ ...n ]
    }
}

table|view 是table或view的名称;

for默认为after 是指在触发器的所有SQL语句都成功执行后才激发。

INSERT|UPDATE|DELETE 是指当插入或更新或删除后激活触发器。可以选定多个选项。

NOT FOR REPLICATION 是指触发器不会在备份的时候执行。

AS后面就是触发器要执行的操作。

IF UPDATE(attribute)是指在指定的attribute进行插入或删除后执行后面的SQL语句。

触发器中有两张临时表,程序员可以使用:

1.INSERTED 表

2.DELETED  表

当插入 INSERTED表存放新增记录,DELETED表不存放

当更新 INSERTED表存放更新的新纪录,DELETED表存放更新前记录

当删除 INSERTED表不存放记录,DELETED表存放被删除的记录