zoukankan      html  css  js  c++  java
  • MySql触发器语法总结

    经过昨天多次失败,今天终于将我要实现的触发器功能写成功了,触发器代码如下:

    -- use dbfortest;

    delimiter $$
    # 注意这里的关键字是before和insert及on和for each row,
    # 表示这个触发器的生效场景是在对 tb_student 的 每条 insert 之前 都触发
    drop trigger if exists tg_before_insert_on_dttest$$
    create trigger tg_before_insert_on_dttest before insert on tb_student for each row /* for each row必须要(但是其它的数据库貌似可要可不要,又或者我的MySQL选择的引擎必须要有for each row) */
    begin
    -- declare num int;
    -- select count(*) into num from dttest;
    -- if (num = 0) then
    -- set num:=num+1;
    -- else
    -- set num:=num+2;
    -- end if;
    # 如果select出来的是一个cell的结果,那么Sql解析器是能自动将它转换为一个变量的(用括号括起来)
    if((select count(*) from tb_student) > 0) then /* then必须要;if后面第一层()可要可不要,不要的话要加空白符隔开;(select count(1) from dttest)>0换成(select count(1) from dttest>0)是错的 */
    /* MySQL这里是不能加delete、insert、update的,否则此触发器触发执行时会报错,但语法是没错的。 */
    delete from tb_student where new.fd_id = 10; /* new是新记录的代表关键字,如果触发器触发的条件是before delete的话,则这里只有old而没有new,如果是update的话则两个都有。 */
    end if; /* 分号必须要,有if就必须有end if,之前就是因为少了这句才一直不通过。 */
    end$$
    delimiter ;

  • 相关阅读:
    idea炫酷主题下载网站
    You have not concluded your merge (MERGE_HEAD exists)
    内部接口
    Nginx初尝试
    泛型和反射
    使用idea创建web项目
    <转>如果你报createSQLQuery is not valid without active transaction,请看这里
    android 通过pull解析xml文件
    shiro环境搭建
    springmvc文件上传
  • 原文地址:https://www.cnblogs.com/silentdoer/p/6169484.html
Copyright © 2011-2022 走看看