• Trigger


    DML触发器:是当数据库发生数据语言操作事件时会自动执行的存储过程。(DELETE,UPDATE,INSERT)

    (1)AFTER触发器:这类触发器是在记录已经改变完之后,才会被激活的,主要是记录变更之后的处理或检查,一旦发现错误也可以用rollback transaction返回操作

    (2)INSTEAD OF触发器:取代原来操作,在记录变更之前发生的。他并不执行原来SQL语句里的操作。

    DDL触发器:(sql2005)响应数据定义语言语句时触发,一般用于数据库中执行管理任务。(CREATE,ALTER,DROP,GRANT,DENY,REVOKE,UPDATE STATISTICS)

    语法:

    CREATE TRIGGER trigger_name
    on {table_name | view}
    [with encryption]
    {FOR | AFTER | INSTEAD OF}
    {[INSERT][DELETE][UPDATE]}
    [not for replication]
    AS sql_statement [....n]

    不能在视图上定义AFTER触发器

    DDL触发器:

    create trigger t1
    on database
    for create_table
    as
     print '想创建表,没门'
     rollback
    
    create table mytable(id int)

    DML触发器:

    create trigger t2
    on athlete
    for insert
    as print '想插入数据,没门'
    rollback

    DML触发器有两个特殊的表inserted,deleted.

    插入表里存放的是更新前得记录:对于插入记录操作来说,插入表里存放的是要插入的数据。对于更新记录操作来说,插入表存放的是要更新的记录。

    删除表里存放的是更新后的记录:对于更新记录操作来说,删除表里存放的是更新前得记录(更新完后立即删除);对于删除记录来说,删除表里存入的是被删除的旧记录。

    select * from test2
    drop trigger trig
    create trigger tg1
    on test2
    for delete,update,insert
    as
     select * from inserted
     select * from deleted

    delete操作:

    insert操作:

    update操作:

  • 相关阅读:
    TCP之Nagle算法与TCP_NODELAY
    CSPS模拟 87
    CSPS模拟 86
    CSPS模拟 85
    CSPS模拟 84
    CSPS模拟 83
    CSPS模拟 82
    CSPS模拟 81
    CSPS模拟 80
    CSPS模拟 79
  • 原文地址:https://www.cnblogs.com/yk00/p/2917954.html
Copyright © 2020-2023  润新知