MySQL创建触发器的方法包括以下几个步骤:
1.创建一个新的触发器
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的操作
END;
其中,trigger_name为触发器的名称,table_name为触发器所在的表的名称,BEFORE/AFTER表示触发器类型(在操作前或操作后触发),INSERT/UPDATE/DELETE表示触发器响应的事件类型,FOR EACH ROW表示该触发器会对每一行进行操作。
2.定义触发器执行的操作
在上述代码中的BEGIN和END之间,可以定义触发器的执行操作,例如:
插入数据
INSERT INTO new_table (col1, col2) VALUES (NEW.col1, NEW.col2);
更新数据
UPDATE old_table SET col1 = NEW.col1, col2 = NEW.col2 WHERE id = OLD.id;
删除数据
DELETE FROM old_table WHERE id = OLD.id;
3.定义触发器响应事件的条件
使用IF语句可以定义触发器响应事件的条件,例如:
IF (NEW.col1 > 100) THEN
-- 触发器执行的操作
END IF;
下面举例说明如何创建一个触发器。
假设有一个users表,其中包含id和balance两个字段,当对balance字段进行更新时,需要更新另一个表user_log,以记录用户的余额变动情况。
1.创建一个新的触发器
CREATE TRIGGER update_balance_trigger
AFTER UPDATE ON users
FOR EACH ROW
BEGIN
-- 触发器执行的操作
END;
2.定义触发器执行的操作
INSERT INTO user_log (user_id, old_balance, new_balance)
VALUES (OLD.id, OLD.balance, NEW.balance);
3.定义触发器响应事件的条件
这个例子中没有需要定义的事件响应条件。
因此,完整的触发器创建代码如下:
CREATE TRIGGER update_balance_trigger
AFTER UPDATE ON users
FOR EACH ROW
BEGIN
INSERT INTO user_log (user_id, old_balance, new_balance)
VALUES (OLD.id, OLD.balance, NEW.balance);
END;
这个触发器会在对users表中的balance字段进行更新时自动执行,将更新前和更新后的用户余额记录到user_log表中。