zoukankan      html  css  js  c++  java
  • Mysql触发器学习

    1.创建准备数据

    --1.创建准备数据库
    --drop database if exists edw;
    create database if not exists edw;
    alter database edw default character SET utf8 COLLATE utf8_general_ci;

    2.创建学生和学生成绩表

    use edw;
    
    --创建学生表
    drop table if exists ods_stu_entity;
    create table if not exists ods_stu_entity(
    id int primary key auto_increment,
    stu_id varchar(64) comment '学号'  unique,
    name varchar(64) comment '姓名',
    sex varchar(16) comment '性别' default '',
    age int  comment '年龄' check(id>0 and id<150),
    grade varchar(16) comment '年级' ,
    address varchar(64) comment '家庭地址'
    )ENGINE=InnoDB default CHARSET=utf8;
    
    
    --创建学生成绩表
    drop table if exists ods_stu_score;
    create table if not exists ods_stu_score(
    id int primary key auto_increment,
    stu_id varchar(64) comment '学号'  unique,
    name varchar(64) comment '姓名',
    grade varchar(16) comment '年级' ,
    chinese float comment '语文成绩' default 0,
    math    float comment '数学成绩' default 0,
    english float comment '英语成绩' default 0
    )ENGINE=InnoDB default CHARSET=utf8;

    3.创建触发器

    功能:当插入学生表数据后,自动在成绩表中插入数据

    --触发器
    --当插入学生信息之后,触发器往成绩表中插入数据
    drop trigger if exists trigger_ods_stu_score;
    create trigger trigger_stu_score 
    after insert on ods_stu_entity for each row
    begin
        insert into ods_stu_score (stu_id,name,grade) 
        values (new.stu_id,new.name,new.grade);
    end;

    4.测试验证结果

    --测试插入一条学生数据
    insert into ods_stu_entity(stu_id,name,sex,age,grade,address) values('120510016','Jim','','27','大一','江西省上饶市婺源县');
    insert into ods_stu_entity(stu_id,name,sex,age,grade,address) values('120510017','Jack','','26','大一','浙江省杭州市西湖区');
    insert into ods_stu_entity(stu_id,name,sex,age,grade,address) values('120510018','Lucy','','25','大一','辽宁省大连市沙河口区');
    
    
    --查看学生表
    select * from ods_stu_entity;
    
    --查看成绩表中是否有数据
    select * from ods_stu_score;

    学生表结果:

       

    成绩表结果:

    创建触发器一个执行语句格式:

      CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW 执行语句;

    创建触发器多个执行语句格式:   

         CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件

         ON 表名 FOR EACH ROW

         BEGIN

            执行语句列表

         END;

    触发器执行顺序

    • 如果 BEFORE 触发器执行失败,SQL 无法正确执行;
    • SQL 执行失败时,AFTER 型触发器不会触发;
    • AFTER 类型的触发器执行失败,SQL 会回滚;
  • 相关阅读:
    盒子垂直水平居中
    Sahi (2) —— https/SSL配置(102 Tutorial)
    Sahi (1) —— 快速入门(101 Tutorial)
    组织分析(1)——介绍
    Java Servlet (1) —— Filter过滤请求与响应
    CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)
    JBoss Wildfly (1) —— 7.2.0.Final编译
    CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)
    CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解
    CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
  • 原文地址:https://www.cnblogs.com/Jims2016/p/10854242.html
Copyright © 2011-2022 走看看