首页 > 数据库 >头歌数据库实验七:函数与触发器

头歌数据库实验七:函数与触发器

时间:2024-05-29 18:55:32浏览次数:38  
标签:sumqty 触发器 sno 数据库 spj 头歌 sqty WHERE

第1关:定义、调用参数函数

use demo;
 
#代码开始
#定义、调用参数函数(func_sqty):查询返回指定供应商的供应零件总数量。
#DROP FUNCTION func_sqty;
 
#SET GLOBAL log_bin_trust_function_creators = TRUE;
DELIMITER //
CREATE FUNCTION func_sqty (
    p_sno CHAR ( 2 )) RETURNS INT READS SQL DATA BEGIN
    DECLARE
        sumqty INT;
    SELECT
        sum( qty ) INTO sumqty 
    FROM
        spj 
    WHERE
        sno = p_sno;
    RETURN sumqty;
    
END//
 
 
#代码结束
 
select func_sqty('S1');
select func_sqty('S2');
select func_sqty('S3');

第2关:触发器应用(1)

use demo;
 
#定义一个触发器(tr_spj_insert),完成向SPJ表新增数据时,及时更新所有供应商供应零件总数量。
#代码开始
DELIMITER //
CREATE TRIGGER tr_spj_insert AFTER INSERT ON spj FOR EACH ROW
BEGIN
    DECLARE
        sumqty INT;
    SELECT
        sum( qty ) INTO sumqty 
    FROM
        spj 
    WHERE
        sno = new.sno;
    UPDATE s 
    SET sqty = sumqty 
    WHERE
        sno = new.sno;
    
END//
 
 
 
 
 
#代码结束
 
#以下代码不要改动或删除,将会对创建的触发器进行测试
insert into spj values
('S1','P1','J1',200),
('S1','P1','J3',100),
('S1','P1','J4',700),
('S1','P2','J2',100),
('S2','P3','J1',400),
('S2','P3','J2',200),
('S2','P3','J4',500),
('S2','P3','J5',400),
('S2','P5','J1',400),
('S2','P5','J2',100),
('S3','P1','J1',200),
('S3','P3','J1',200),
('S4','P5','J1',100),
('S4','P6','J3',300),
('S4','P6','J4',200),
('S5','P2','J4',100),
('S5','P3','J1',200),
('S5','P6','J2',200),
('S5','P6','J4',500); 

第3关:触发器应用(2)

use demo;
 
#定义一个触发器(tr_spj_delete),完成向SPJ表删除数据时,及时更新所有供应商供应零件总数量。
#代码开始
DELIMITER //
CREATE TRIGGER tr_spj_delete AFTER DELETE ON spj FOR EACH ROW
BEGIN
        DECLARE
        sumqty INT;
    SELECT
        sum( qty ) INTO sumqty 
    FROM
        spj 
    WHERE
        sno = old.sno;
    update s 
    SET sqty = sumqty 
    WHERE
        sno = old.sno;
    END//
#代码结束
 
#以下代码不要改动或删除,将会对创建的触发器进行测试
DELETE FROM spj WHERE sno='S1' AND pno='P1' AND jno='J1';

第4关:触发器应用(3)

use demo;
 
#定义一个触发器(tr_spj_update),完成向SPJ表更新数据时,及时更新所有供应商供应零件总数量。
#代码开始
DELIMITER //
CREATE TRIGGER tr_spj_update AFTER UPDATE ON spj FOR EACH ROW
BEGIN
        DECLARE
        sumqty INT;
    SELECT
        sum( qty ) INTO sumqty 
    FROM
        spj 
    WHERE
        sno = old.sno;
    update s 
    SET sqty = sumqty 
    WHERE
        sno = old.sno;
    SELECT
        sum( qty ) INTO sumqty 
    FROM
        spj 
    WHERE
        sno = new.sno;
    update s 
    SET sqty = sumqty 
    WHERE
        sno = new.sno;
    END//
 
#代码结束
 
#以下代码不要改动或删除,将会对创建的触发器进行测试
UPDATE spj SET sno='S1' WHERE sno='S2' AND pno='P3' AND jno='J1';

标签:sumqty,触发器,sno,数据库,spj,头歌,sqty,WHERE
From: https://www.cnblogs.com/whwh/p/18220897

相关文章

  • 头歌数据库实验六:存储过程
    第1关:增加供应商相关列sqtyusedemo;#代码开始#在S表中增加一列供应零件总数量(sqty),默认值为0。ALTERTABLEsADDsqtyINTDEFAULT0;#代码结束descs;第2关:定义、调用简单存储过程usedemo;#代码开始#1、定义简单存储过程:计算所有供应商供应零件总数量并修......
  • 基于Springboot + vue实现的网上订餐系统--附源码+论文+数据库
    基于Springboot+vue实现的网上订餐系统摘 要随着我国经济的飞速发展,人们的生活速度明显加快,在餐厅吃饭排队的情况到处可见,近年来由于新兴IT行业的空前发展,它与传统餐饮行业也进行了新旧的结合,很多餐饮商户开始通过网络建设订餐系统,通过专门的网上订餐系统,一方面节省了用......
  • django 多数据库接入相关操作
    多数据库注册在配置文件中的default同级进行注册即可DATABASES={"default":{.....},"aaa":{.....},"bbb":{.....},}建立数据表模型模型建立后做一些操作让使用更加便携,其他使用此模型的时候正常  Aaa......
  • Oracle如何诊断远程访问数据库慢/超时等问题小结
    管理维护Oracle数据库的时候,有时候会碰到用户(应用程序)远程连接/访问数据库非常慢,甚至连接超时的问题。这里简单总结一下遇到这类问题的方法,仅供参考,如有疏漏或不足之处,敬请指正。文中部分内容来自官方文档DocID1679567.1[1]遇到这类问题,首先应该检查/排除网络问题,一般来说,有......
  • Labels and Databases for Mac( 数据库标签制作软件)1.8.0版
     LabelsandDatabasesforMac一款数据库标签制作和设计软件。LabelsandDatabases可以帮助您使用各种内置标签格式创建标签、信封和卡片,并使用用户数据库中包含的信息填充它们,即使用MailMerge创建和打印标签。LabelsandDatabasesforMac(数据库标签制作软件)软件......
  • Java语言,MySQL数据库;SSM 心理咨询预约管理系统19086(免费领源码)计算机毕业设计项目推荐
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3ssm框架介绍1.4论文结构与章节安排2 心理咨询预约管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能......
  • python3.x中ORM框架SQLObject使用SQLite数据库随笔
    1、如果未安装SQLObject首先要安装,在管理员CMD下,输入如下命令:pipinstallsqlobject2、创建数据库文件,并建立数据库连接,通过修改SQLObject内置的sqlhub的processConnection属性,具体代码如下sqlobject.sqlhub.processConnection=sqlobject.connectionForURI('sqlite:.......
  • macos php 如何链接神通数据库aci
    环境:macosphp版本:7.4利用:docker我得先喷一下刚开始装的x86官网上下载的居然没有pdo扩展最后在网上找到了arm64的扩展简直了...1。编写dockerfileFROMbai615/arm64-php:7.4.33-fpmRUNsed-i's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.lis......
  • Kettle 从数据库读取数据存到变量中
    布局图JobTransformationsTableinputSELECT'内容'ASINFOFROMDUAL;Setvariables ModifiedJavaScriptvalue Setvariables2 Reference:Kettle连接Oracle使用手册及问题解决方案 ......
  • (免费领源码)Java/Mysql数据库+01012大学生爱心互助代购网站,计算机毕业设计项目推荐上万
    摘 要在网络信息的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,企业只能以用户为导向,按品种分类规划,以产品的持续创新作为企业最重要的竞争手段。系统采用了B/S结构,将所有业务模块采用以浏览器交互的模式,选择My......