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)

浙公网安备 33010602011771号