zoukankan      html  css  js  c++  java
  • MySQL-触发器

    触发器
    触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行。
    特点
    监视地点:表名
    监视事件:update,delete,insert
    触发时间:after,before
    触发事件:update,delete,insert
    它不能直接调用,是由数据库主动执行。

    特别说明
    1.对于insert,新插入的行用new表示,行中每一列的值用new.列名来表示。
    2.对于delete,用old表示,old.列名可以引用被删除的行的值。
    3.对于update 修改前的数据用old表示,修改后的用new
    create trigger tr_insert after insert
    on employee for each row
    begin
    insert department values(new.id,'ttt');
    end
    $$;

    create trigger tr_delete before delete
    on employee for each row
    begin
    delete  from department where id=old.id;
    end
    $$;

    create trigger tr_update  after update
    on employee for each row
    begin
    update department set depName='hhh' where id=2;
    end
    $$;

    查看触发器
    show triggersG
    查看触发器的结构
    desc information_schema.triggers
    查看触发器的名字
    select * from information_schema.triggers where trigger_name='tr_delete'G
    删除触发器
    drop trigger tr_delete;


    存储过程与触发器的区别
    触发器与存储过程非常相似,触发器也是SQL语句集,
    两者唯一的区别是触发器不能用EXECUTE语句调用,
    而是在用户执行Transact-SQL语句时自动触发(激活)执行。
    触发器是在一个修改了指定表中的数据时执行的存储过程。
    通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。
    由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,
    以确保数据的完整性。触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,
    而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,
    SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。


  • 相关阅读:
    [BZOJ] 1623: [Usaco2008 Open]Cow Cars 奶牛飞车
    [BZOJ] 3631: [JLOI2014]松鼠的新家
    [BZOJ] 1775: [Usaco2009 Dec]Vidgame 电视游戏问题
    [BZOJ] 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
    [Codeforces] #432 div.2 (Virtual)
    [BZOJ] 1819: [JSOI]Word Query电子字典
    [Codeforces] #436 E. Fire
    [Codeforces] #436 D. Make a Permutation!
    [Codeforces] #436 C. Bus
    [Codeforces] #436 B. Polycarp and Letters
  • 原文地址:https://www.cnblogs.com/3ddan/p/10361680.html
Copyright © 2011-2022 走看看