正在查看旧版本。 查看 当前版本.
与当前比较 查看页面历史记录
« 前一个 版本 3 当前 »
触发器也是存储例程中的一种,用于MySQL服务器在特定情况下自动调用,比如:
CREATE TRIGGER 触发器名 {BEFORE | AFTER} {INSERT | DELETE | UPDATE} ON 表名 FOR EATCH ROW BEGIN 触发器内容 END
{BEFORE | AFTER}
BEFORE
AFTER
{INSERT | DELETE | UPDATE}
FOR EACH ROW BEGIN ... END
INSERT
DELETE
UPDATE
WHERE
MySQL提供了NEW和OLD两个单词来代表新记录和旧记录的值,它们的含义如下:
NEW
OLD
以下是一个触发器的示例:
DELIMITER $ CREATE TRIGGER bi_t1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN IF new.m1 < 1 THEN SET new.m1 = 1; ELSEIF new.m1 > 10 THEN SET new.m1 = 10; END IF; END $ DELIMITER ;
查看:
SHOW TRIGGERS;
查看定义:
SHOW CREATE TRIGGER 触发器名
删除:
DROP TRIGGER 触发器名
用于MySQL服务器在某个时间点或者每隔一段时间自动执行某些语句。
CREATE EVENT 事件名 ON SCHEDULE { AT 某个确定的时间点 | EVERY 期望的时间间隔 [STARTS 开始日期和时间] [END 结束日期和时间] } DO BEGIN 具体的语句 END
事件支持两种执行方式:在某个确定的时间点执行;每隔一段时间执行一次。
在某个确定的时间点执行,比如:
CREATE EVENT insert_t1_event ON SCHEDULE AT '2021-09-04 15:48:54' DO BEGIN INSERT INTO t1(m1, n1) VALUES(6, 'f'); END
也可以通过表达式来指定时间点,比如:
CREATE EVENT insert_t1_event ON SCHEDULE AT DATE_ADD(NOW(), INTERVAL 2 DAY) DO BEGIN INSERT INTO t1(m1, n1) VALUES(6, 'f'); END
CREATE EVENT insert_t1_event ON SCHEDULE EVERY 1 HOUR DO BEGIN INSERT INTO t1(m1, n1) VALUES(6, 'f'); END