mysql触发器

触发器格式

DELIMITER | #定义结束符为|,mysql中;是结束符,编写触发器时需要临时将结束符又改为其它字符如|,触发器结束后在改回来
CREATE TRIGGER test_update #创建名字为test_update的触发器
{BEFORE | AFTER} {INSERT | UPDATE | DELETE } ON test #在test表发生插入、更新或删除操作之前或之后触发
FOR EACH ROW #行级触发,每行发生变化时触发
BEGIN #开始触发以下脚本执行
END | #脚本执行结束

NEW 与 OLD

MySQL 中定义了 NEW 和 OLD
NEW表示发生变化后的数据,OLD表示发生变化之前的数据
在INSERT触发器中用NEW,DELETE触发器中用OLD,UPDATE触发器NEW和OLD都可以用

变量

mysql用@表示用户变量,@@表示系统变量

对变量赋值采用 SET 语句,语法为:
SET @var_name = expr [,var_name = expr] ...

也可以用如下方式定义变量

在BEGIN/END中定义变量,格式如下:
DECLARE var_name[,...] type [DEFAULT value]
其中:
var_name 为变量名称,不区分大小写;type 为 MySQL 支持的任何数据类型;可以同时定义多个同类型的变量,用逗号隔开;变量初始值为 NULL,如果需要,可以使用 DEFAULT 子句提供默认值,值可以被指定为一个表达式。
对变量赋值采用 SET 语句,语法为:
SET var_name = expr [,var_name = expr] ...

删除触发器

DROP TRIGGER IF EXISTS *test*;

另外需要注意的是,如果触发器执行失败,可能造成sql停止执行(AFTER)或数据回滚(BEFORE),使用时请多加注意

例子:

DELIMITER |  
DROP TRIGGER IF EXISTS test_update;  
CREATE TRIGGER test_update AFTER UPDATE ON test FOR EACH ROW BEGIN SET @tt_re = (SELECT http_get(CONCAT('http://192.168.0.1:8080/my.do?id=', OLD.id)));  
END | DELIMITER ;

你可能感兴趣的:(mysql触发器)