当前位置 博文首页 > 无限迭代中......:《数据库系统实训》实验报告——触发器

    无限迭代中......:《数据库系统实训》实验报告——触发器

    作者:[db:作者] 时间:2021-07-19 19:19

    使用触发器

    第一部分:样例库的应用

    1)添加订单物品时,自动获取物品的价格
    触发器创建SQL:

    create trigger auto_get_price before insert on orderitems
    for each row
    begin
    	set new.item_price = (
        select prod_price from products
        where prod_id = new.prod_id
        );
    end;
    

    测试语句:

    insert into orderitems values(20006,2,'ANV02','20',0);
    

    结果截图:
    在这里插入图片描述

    可以看到,订单的商品单价被触发器修改为正确的价格,而非输入的错误数据
    2)更新物品标签时,自动更新时间
    触发器创建SQL:

    create trigger auto_update_datetime before update on productnotes
    for each row
    begin
    	set new.note_date = now();
    end;
    

    测试语句:

    update productnotes set note_text=concat(note_text, " new!") where note_id=102;
    

    结果截图:
    在这里插入图片描述

    可以看到,productnotes中note_text被修改,并且其note_date也被触发器修改为update执行的时间。

    第二部分:所选课题数据库的应用

    1)
    触发器创建SQL:

    create trigger check_order before update on order
    for each row
    begin
    	set new.amount = (
        select sum(total_price) from order_details
        where order_id = new.id
    );
    set new.totalnumber = (
    select count(0) from order_details
        where order_id = new.id
    );
    end;
    

    测试语句:insert into types values(‘modelx’,‘ModelX’,‘tesla’,null,null,null,‘电动’);
    结果截图:

    在这里插入图片描述

    cs