• 触发器的应用(商店打折)


    --用户信息表
    create table useres
    (
    u_id number(13,0) primary key,
    username varchar2(50) not null,
    password varchar2(20) not null,
    name varchar2(50),
    sex char(4),
    birthday date,
    phonenum varchar2(11),
    grade int default 0 --积分
    );

    --会员表
    create table vip
    (
    vid varchar2(20) primary key,
    u_id number(13,0),
    discount number(3,2), --折扣

    constraint fk_vip foreign key(u_id) references useres(u_id)
    );

    insert into useres values(2016061600001,'jacky','123456','张三','男','23-7月-88','13548643025',default);
    insert into useres values(2016061600002,'mary','mary','王红','女','20-7月-98','13748643025',default);
    insert into useres values(2016061600003,'jason','123456','李四','男','23-7月-88','13948743025',default);
    commit;

    --触发器
    create or replace trigger trigger_vip
    after
    update of grade
    on useres
    for each row
    when (new.grade >= 10000)
    declare
    vcount int;
    v_vid varchar2(20) := 'V' || to_char(sysdate,'yyyyMMdd') || '00001';
    v_discount number(3,2);
    begin
    select count(*) into vcount from vip;
    if vcount > 0 then
    v_vid := substr(v_vid,0,length(v_vid) - 5) || lpad(to_char((to_number(substr(v_vid,length(v_vid) - 4,5),'99999') + 1)),5,0);
    end if;

    case
    when :new.grade >= 10000 and :new.grade <= 50000 then
    v_discount := 0.95;
    when :new.grade >= 60000 and :new.grade <= 100000 then
    v_discount := 0.90;
    when :new.grade >= 100000 then
    v_discount := 0.80;
    end case;

    select count(*) into vcount from vip where u_id = :old.u_id;

    if vcount > 0 then
    select vid into v_vid from vip where u_id = :old.u_id;
    update vip set discount = v_discount where vid = v_vid;
    else
    insert into vip values(v_vid,:old.u_id,v_discount);
    end if;
    end;


    --测试
    update useres set grade = grade + 50000 where u_id = 2016061600001;
    commit;

  • 相关阅读:
    springcloud -- sleuth+zipkin整合rabbitMQ详解
    docker 更新后出现 error during connect
    springcloud --- spring cloud sleuth和zipkin日志管理(spring boot 2.18)
    kotlin系列文章 --- 3.条件控制
    kotlin -- 可见性修饰符
    kotlin系列文章 --- 2.基本语法
    kotlin系列文章 --- 1.初识kotlin
    oracle索引失效总结
    mysql常用命令行操作
    JavaFX简介和Scene Builder工具的安装使用简易教程
  • 原文地址:https://www.cnblogs.com/hgc-bky/p/5592073.html
Copyright © 2020-2023  润新知