MYSQL下如何禁用触发器。类似在SQL SERVER的alter table 表名 disable trigger 触发器名称。
查看MYSQL的ALTER TABLE语法,没有发现这样的功能。既然MYSQL自身不提供,我们就通过变通的办法来实现。
下面是网友提供的代码,重点在触发器的执行代码时,做一个判断,某个表是否存在,如果存在则继续执行,也可以用某个系统变量来做开关。
DROP TABLE IF EXISTS test ; CREATE TABLE test (iss int);
delimiter $$ CREATE TRIGGER trIn AFTER INSERT ON test FOR each ROW BEGIN IF (select count(*) from information_schema.tables where table_name='xxx')=0 THEN SET @n=1; ----你要做的操作 ELSE SET @n=2; ----这里你可以随意写个东西 反正就是不触发本来的操作 END IF ; END; $$
delimiter ;
--test
mysql> set @N=0; Query OK, 0 rows affected (0.00 sec)
mysql> create table xxx(a int); Query OK, 0 rows affected (0.01 sec)
mysql> insert test select 1; Query OK, 1 row affected (0.04 sec) Records: 1 Duplicates: 0 Warnings: 0
mysql> select @n; +------+ | @n | +------+ | 2 | +------+ 1 row in set (0.00 sec)
|
阅读(5625) | 评论(0) | 转发(0) |