MySQL触发器是当某个表发生特定事件(INSERT、UPDATE、DELETE)时自动执行的SQL语句块。触发器可以保证数据的完整性和一致性。
MySQL触发器有以下特点:
- 与事件相关联:触发器与INSERT、UPDATE、DELETE事件相关联,当事件发生时自动执行。
- 与表相关联:触发器与特定的表相关联,当该表发生相关事件时执行。
- 可以是BEFORE或AFTER触发器:在事件之前或之后执行。
- 可以对NEW表、OLD表的行进行访问:NEW表示新插入或更新的行,OLD表示修改前的数据行。
- 可以引用事务变量:NEW与OLD作为事务变量,在触发器内利用。
MySQL触发器相关SQL语句:
CREATE TRIGGER trigger_name
{BEFORE | AFTER}
{INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN
...
END
示例:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(20),
balance INT
);
CREATE TRIGGER balance_check
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
IF NEW.balance < 0 THEN
SET NEW.balance = 0;
END IF;
END;
上述触发器在向users表插入新行之前检查balance列,如果小于0则设置为0。这样可以保证balance列的值都是大于等于0的。