mysql - MySQL 中可以暂时忽略触发器吗?

标签 mysql

假设表B有一个BEFORE DELETE触发器。但是,在某些情况下,我希望当我尝试从 B 中删除某些内容时禁用触发器,这可能吗?

最佳答案

在触发器中插入条件验证(if),以检查执行操作的条件是否会被执行

例如:

create trigger ai_eav after insert on eav
for each row begin
    set @id=new.entity;
    set @attribute=new.attribute;
    set @value=new.value;

    if n > m then
        update pivot set 
            Author=(select if(@attribute='Author',@value,Author)),
            Title=(select if(@attribute='Title',@value,Title)),
            Publisher=(select if(@attribute='Publisher',@value,Publisher))
        where id=@id;
    end if
end

你可以在这里找到 mysql if 语句的语法: http://dev.mysql.com/doc/refman/5.0/en/if.html

此解决方案可能比删除并重新创建触发器更具性能

关于mysql - MySQL 中可以暂时忽略触发器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248351/

相关文章:

php - 从 Zend 中的表中选择完全匹配的列...?

mysql - 从数据库中存储的推文中提取 Twitter 短网址 - mysql

mysql - R Shiny 应用程序中的 SQL 查询语法 - CAST

javascript - 从 JS 转 HTML 转 PHP

java - 如何使用 elasticsearch 重命名实体中的 id 字段?

javascript - PHP:while循环元素粘在一起

php - 使用 JSON 解析 MySQL 数据

php - MySql 查询 : DELETE FROM. 语法错误或访问冲突:1064

PHP & MySQL : Register/Create an Account

php - 我如何添加一条显示 "$user_id Deleted"或 "$user_id not found?"的消息