Chinaunix首页 | 论坛 | 博客
  • 博客访问: 489927
  • 博文数量: 99
  • 博客积分: 3621
  • 博客等级: 中校
  • 技术积分: 1089
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 16:29
文章存档

2012年(21)

2011年(28)

2010年(50)

分类: Mysql/postgreSQL

2010-08-19 11:16:53

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)


阅读(5579) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~