什么是MySQL触发器?

MySQL触发器是当某个表发生特定事件(INSERT、UPDATE、DELETE)时自动执行的SQL语句块。触发器可以保证数据的完整性和一致性。

MySQL触发器有以下特点:

  1. 与事件相关联:触发器与INSERT、UPDATE、DELETE事件相关联,当事件发生时自动执行。
  2. 与表相关联:触发器与特定的表相关联,当该表发生相关事件时执行。
  3. 可以是BEFORE或AFTER触发器:在事件之前或之后执行。
  4. 可以对NEW表、OLD表的行进行访问:NEW表示新插入或更新的行,OLD表示修改前的数据行。
  5. 可以引用事务变量: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的。