zoukankan      html  css  js  c++  java
  • mysql-进阶 触发器

    触发器,顾名思义,当执行一个sql的时候顺带着执行与他绑定的另一条sql ,相当于设置了个默认执行sql

    先建个表

     create table test(
     id int primary key auto_increment not null,
     title char(20) not null default '',
     author char(20) not null default '',
     time bigint not null default 0
     );

    d $

    添加一个触发器

    create trigger insert_arc before insert on test  //改触发事件在插入这条数据之前执行
    for each row
    begin
    if new.title='' then    //如果标题为空就执行下面
    set new.title='默认';  //设置标题为默认   new. 代表新插入的那条信息
    end if;
    end
    $

    再添加一条数据

    insert into testarc set author='111'$

    create trigger insert_art before insert on test
        for each row
        begin
        if new.time=0 && new.author="" then
        set new.author="我大HD";
        set new.time=unix_timestamp();
        end if;
        end$

    上面那一条的加强版,这个beging...end 之间是可以执行多条命令的,如果不用他就只能执行一条,所以能加上就最好加上

    执行同步删除功能 删除班级之后删除对应班级的学生表的内容 

    这里就用到了after 和old.

    create trigger del_class after delete on class
    for each row
    begin
        delete from stu where cid=old.cid;
    end
    $

    这里的after和before是声明在sql语句执行前执行后 new.和old.是代表之前的那条语句, 比如你绑定了个delete语句,那么old.就代表这个被删掉的那条信息内容,当然,delete只能用old. 而如果是insert命令的触发器就只能用new.

    update类型的就看你喜欢额

  • 相关阅读:
    前端常用代码
    前端常用代码
    Velocity模版自定义标签
    算法思想
    java特性之三--多态性
    非线性数据结构--图
    接口
    java特性之四--抽象
    (数据结构与算法) 堆
    数据结构_平衡二叉树(AVL树)
  • 原文地址:https://www.cnblogs.com/gaofeifiy/p/5053687.html
Copyright © 2011-2022 走看看