mysql 触发器 if 语句update怎么操作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 触发器 if 语句update怎么操作?相关的知识,希望对你有一定的参考价值。

参考技术A

有时候在修改某一个字段的值得时候我们需要根据当前字段的不同状态进行不同处理,

比如对于用户表,我们需要记录下来用户被访问的次数,但访问次数的初始值为 null。

如下:

CREATE TABLE `test` (

`id`  int(11) NULL DEFAULT NULL ,

`name`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,

`visit_num`  int(11) NULL DEFAULT NULL 

)

我们就可以使用如下的 sql 进行判断和修改

UPDATE test set visit_age=if(visit_num is null,1,visit_num+1) where id=1。

MySQL触发器的操作

数据库对象触发器用来实现由一些表事件触发的某个操作,当执行表事件时,则会激活触发器,从而执行其包含的操作;

MySQL在触发以下语句时,会自动执行所设置的操作:delete、insert、update语句,其他SQL语句则不会激活触发器;

触发器的操作包括创建触发器,查看触发器和删除触发器。

在MySQL中创建触发器通过以下语句实现:

create trigger trigger_name before|after trigger_event on table_name for each now trigger_STMT;

before和after参数指定了触发器的执行时间,before是指在触发器事件之前执行触发语句,trigger_event表示触发事件,即触发器执行条件,包含delete、insert、update语句,trigger_STMT表示激活触发器后被执行的语句,如:

create trigger tri_diary before insert on t_dept for each now insert into t_diary values(null, t_dept, now()) ;

当向t_dept插入任意一条记录,都会在此之前向t_diary表插入当前事件记录。

如需创建多条包含执行语句的触发器,可通过以下命令实现:

create trigger trigger_name before|after trigger_event on table_name for each row begin insert trigger_STMT end

举个例子吧,如果需要每次在t_dept插入数据之后向表t_diary插入两条当前时间,语句如下:

delimiter $$
create trigger tri_diary2 
    after insert 
        on t_dept for each row 
            begin
                insert into t_diary values(null, t_dept, now());
                insert into t_diary values(null, t_dept, now());
            end
            $$
delimiter;

查看触发器,类似于表和视图,都是通过show等语句实现:

show triggers ;

在系统表information_schema表中也可实现查看触发器:

use information_schema;
select * from trigger;

删除触发器:

drop trigger tri_name;

 

以上是关于mysql 触发器 if 语句update怎么操作?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL ------ 触发器(TRIGGER)(二十七)

MySQL触发器的操作

触发器中的 MySQL IF 语句 - ELSE 不执行任何操作

mysql-触发器

在mysql if语句中使用另一个表中的列

MySQL触发器