MySQL的触发器

  Mysql的触发器有6种,before: insert, delete, update; after: insert, update, delete,基本语法是

  DROP TRIGGER  IF EXISTS trigger_name;  删除触发器

  CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_statement  基本语法

  示例: CREATE TRIGGER

    

  

         user_after_insert_trigger

      AFTER INSERT ON user FOR EACH ROW

        INSERT INTO account VALUES(DEFAULT, 0, new.id)

    

    执行插入语句

      INSERT INTO user VALUES(DEFAULT, ‘1584444444’, ‘Darkstar', '12346');

      INSERT INTO user VALUES(DEFAULT, ‘1584444443’, ‘Darkstar', '12346');

    结果为:

    

    可见触发器已经成功触发

    除此之外, 在触发器的statement部分还可以嵌套PLSQL语句,例如:

    

    现在要实现的功能是当borrow表中插入一条数据的时候如果该数据的book_id与book表中

    name=’computer'对应记录的id相同的话同时也往borrow_save表添加一条记录。对应的触发器语句为:

    DELILMITER $

    CREATE TRIGGER borrow_after_insert_trigger AFTER INSERT ON borrow FOR EACH ROW
        BEGIN
            DECLARE book_id int;
            SELECT id INTO book_id FROM book WHERE name = 'computer';
            IF new.book_id = book_id THEN
                INSERT INTO borrow_save VALUES(DEFAULT, book_id);
            END IF;
        END;

    DELIMITER ;

    

     

    触发器成功实现该功能。

    总结:

      1.触发器只有6种,并且在同一表中不能有多个同一类型的触发器。

      2.new指代的是新的对象(insert, update),old指代的是旧的对象(delete, update)

posted @ 2017-07-21 17:11  UpTownCat  阅读(245)  评论(0)    收藏  举报