Mysql Trigger使用贴士
输入方式
-
Mysql WorkBench 只能在Alter Table的Triggers标签页添加, 在Query Window 添加时要加上
use databasename$$
; -
Navicat for Mysql可以直接在Sql Window添加。
注意事项
-
不可以在View上建Trigger
-
可以修改New的数据
-
不可以修改Old的数据
使用实例
现有一张表T_A与其他数据同步数据,检测到插入请求时,在T_A检查是否有该条记录,有则Update对应数据,否则Insert新数据,直接在T_A上建Trgger不符合规则,实现方式:
-
新建一张T_B, 接受同步表的插入请求;
-
在T_B新建一个Before Insert Trigger,命名为TG_B_A;
-
接受到插入请求时,去T_A检验是否存在数据,有则在T_A做Update操作,否则Insert.
简单示例如下:
DELIMITER$$
CREATE TRIGGER TG_B_A BEFORE INSERT
ON T_B FOR EACH ROW
BEGIN
DECLARE A_COUNT INT;
SELECT COUNT(*) FROM T_A WHERE A_ID LIKE '1' INTO A_COUNT;
WHILE A_COUNT > 0 DO
UPDATE T_A SET A_ID='1';
SET A_COUNT = -1;
END WHILE;
WHILE A_COUNT = 0 DO
INSERT T_A VALUES ('1');
SET A_COUNT = -1;
END WHILE;
END;
$$
Devin Sun