zoukankan      html  css  js  c++  java
  • mysql的触发器

    删除触发器
    drop TRIGGER  触发器名字;
    
    查找库里面的所有触发器
    SELECT * FROM information_schema.`TRIGGERS`;
    show triggers
    触发器语法
    
    触发器(trigger):监视某种情况,并触发某种操作。
    
    触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)
    
    语法:
    
    create trigger triggerName
    
    after/before insert/update/delete on 表名
    
    for each row   #这句话在mysql是固定的一般都是做行级触发所以这么写 但不是必须的  for each row 就代表每行都相应XXX事件(insert update delete) 理解成每当往表插入(更新 删除)一行的时候就触发
    
    begin
    
    sql语句;
    
    end;
    添加用户时的触发器
    CREATE  TRIGGER add_trigger_us
    AFTER INSERT on us_users
    FOR EACH ROW
    BEGIN
    
    INSERT into us_person(`name`,age)VALUES(new.`name`,new.age); 
    
    end

    // insert into us_user(`name`,age)values('wang',10000);
    注意:新插入的行用new来表示,行中的每一列的值用new.列名来表示。
    修改用户时的触发器
    
    CREATE TRIGGER update_trigger_us
    AFTER UPDATE on us_person
    for EACH ROW
    BEGIN
    
    UPDATE us_users set age=new.age where `name`=new.`name`;
    
    END

    //UPDATE us_person set age=9999 where `name`='wang';
    注意:

    对于update而言:被修改的行,修改前的数据,用old来表示,old.列名引用被修改之前行中的值;

    
    

    修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。

    
    
    删除时的触发器
    
    
    CREATE  TRIGGER delete_trigger_us
    AFTER DELETE on us_users
    FOR EACH ROW
    
    BEGIN
    
    DELETE from  us_person where `name`=old.`name`;
    
    end
    
    //DELETE  from us_users where id=129007;
    
    注意  delete中不存在new ,对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。
    先讲一下after和before的区别:
    
    after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;
    
    before是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作;

    例如:操作数据前判断,数据的值,进行修改

    CREATE TRIGGER befor_update
    BEFORE INSERT on us_users
    for each ROW
    BEGIN

    
    

    IF new.age>1000 THEN
    set new.age=2;
    end if;
    end




    主要来源:http://www.cnblogs.com/zzwlovegfj/archive/2012/07/05/2578574.html
  • 相关阅读:
    Django基础——Form&Ajax篇
    redis--悲观锁、乐观锁
    redis--事务
    redis--三种特殊数据类型---的简介、用法
    redis--zet(有序集合)---常用命令、场景
    redis--hash(哈希)---常用命令、场景
    redis--set(无序集合)--的常用命令,应用
    redis--(队列)list--常用命令、小结
    redis--string(字符串) --常用命令、应用场景
    redis基本知识
  • 原文地址:https://www.cnblogs.com/xiaoyaodijun/p/4595985.html
Copyright © 2011-2022 走看看