首页 > 其他分享 >2024/05/27

2024/05/27

时间:2024-05-27 21:11:13浏览次数:31  
标签:触发器 27 end 05 -- begin 2024 Cno select

今日学习有关知识时长:78分钟

代码行数:80行

发表博客数量:1篇

今日学习的内容主要是有关数据库操作中的触发器和储存过程。

触发器(trigger)就相当于事件绑定,当你进行某类sql语句操作时将会自动调用你你所设置的触发器来进行操作。

储存过程(procedure)就相当于我们Java中的方法,可以带有参数和返回值,可以在储存过程中设置多条语句,调用储存过程就相当于自动调用这些语句。调用时可以直接使用exec+储存器名称+参数。

--建立 course 与 sc 表间来维护参照完整性而使用的一个级联删除触发器、一个级联修改触发器和一个受限插入触发器。

create trigger trg_CascadeDelete on Course --级联删除触发器
for delete
as
begin
    delete from sc where Cno in(select Cno from  deleted)
end;
go

create trigger trg_CascadeUpdate on Course --级联修改触发器
for update
as
begin 
    if update(Cno)
    begin
        declare @OldCno char(10),@NewCno char(10);
        select @OldCno=Cno from deleted;
        select @NewCno=Cno from inserted;
        update SC set Cno=@NewCno where Cno=@OldCno;
    end
end;
go

create trigger trg_RestrictInsert ON SC --受限插入触发器
for insert 
as 
begin
    if exists(select * from inserted where Cno not in(Select Cno from Course))
    begin
        raiserror('该课程号不存在',16,1);
        rollback transaction;
    end
end;
go

--统计成绩 60 分以下的人数
create procedure UnderSixty
as
begin
    select count(*) 低于60分的人数 from sc where Grade<60;
end;
exec UnderSixty;
go

--统计给定 cno 的课程的平均成绩,并返回平均成绩
create procedure CourseAvgGrade(@Cno char(10),@Avg float output)
as
begin
    select @Avg=avg(Grade) from sc where Cno=@Cno;
end;
declare @avggrade float
exec CourseAvgGrade '1',@avggrade
select @avggrade as 平均分;
go

--将 sc 表中 grade 从百分制改为等级制(5、4、3、2、1)。即 0-20 分为 1,21-40为 2,4 1-60 为 3,61-80 为 4,81-100 为 5。
create procedure Grades
as
begin
    update sc
    set Grade=
    case
        when Grade between 81 and 100 then 5
        when Grade between 61 and 80 then 4
        when Grade between 41 and 60 then 3
        when Grade between 21 and 40 then 2
        when Grade between 0 and 20 then 1
        else Grade
    end
end;
exec Grades;

 

标签:触发器,27,end,05,--,begin,2024,Cno,select
From: https://www.cnblogs.com/zhenaifen/p/18216529

相关文章

  • MindSponge分子动力学模拟——多路径分子模拟(2024.05)
    技术背景在前面的MindSponge教程系列博客中,我们已经介绍过MindSponge分子动力学模拟框架的基础功能使用方法,例如MindSponge的安装与使用、定义分子系统、计算单点能和迭代器等等。这些模块和功能,更多的是凭借MindSpore深度学习框架的自动微分、GPU加速和Python语言的灵活性,而本文......
  • 2024 蓝桥杯省赛游记
    Day-inf看了眼去年的题,一个插头dp一个杜教筛,恐怖如斯群里问了句发现hkhmtr也参加Day1完全没压力所以随便玩了。开场扫了一眼只有8道题,有个树上莫队?T1赛后看知乎好像能直接拿excel生成字符串形式的日期T2一开始没注意白棋一定有13个子,跑完了再看题才想到,提答的......
  • 2024年中国金融行业网络安全案例集
    随着科技的飞速发展,金融行业与信息技术的融合日益加深,网络安全已成为金融行业发展的生命线。金融行业作为国家经济的核心支柱,正在面临着日益复杂严峻的网络安全挑战。因此,深入研究和探讨金融行业的网络安全问题,不仅关乎金融行业的稳健运行,更关系到国家经济的安全和社会的稳......
  • 5_27总结
    增强for循环一般for循环:int[]num={1,2,3,4,5,6};for(inti=0;i<num.length;i++){System.out.println("元素:"+num[i]);}增强for循环:int[]num={1,2,3,4,5,6};for(inti:num){//集合或数组a:数组名称numSystem.out.println......
  • 2024-05-23_结构体概念等作业
    1.如有以下代码:structstudent{intnum;charname[32];floatscore;}stu;则下面的叙述不正确的是:()A.struct是结构体类型的关键字B.structstudent是用户定义的结构体类型C.num,score都是结构体成员名D.stu是用户定义的结构体类型名解析:A:正确,在C......
  • 2024最全java面试题整理(持续更新)
    1.springboot项目和maven项目的区别?(1)打包方式:传统项目如果需要打成war包,需要在WEB-INF目录结构配置web.xml文件;springboot则不需要(2)项目启动方式:传统web项目启动方式:在eclipse和tomcat插件中导入项目,然后启动tomcat,项目也启动了。或者将项目打成war包,放入tomcat中,启动tomca......
  • android studio2024最新详解(完全小白)安装-运行第一个程序
    前面我用2023最新版本的,死活就卡在引入依赖那里卡了两天,俺的崩溃谁知啊!! 后面我就换了个思维,看着网上大多的教程都是基于2022或者2020的,我就找了个看起来非常详细的视频,里面的是2020的,所以我就下载了2020。  有点小伙伴可能会找不到androidstudio的过往版本,这里我就直......
  • 郑州2024-ccpc-赛后总结-wh
    今年真的很可惜,就差1个罚时拿全国邀请银,省赛金。比较惋惜刚开始第一发,找到签到题太快了,忘写输入了直接wa1发,随后Fac,其次开始写J,J是我的问题,刚开始想5位全排列结果T了,然后发现性质结果一直卡endl,WA了4发(导致没拿邀请银,真的很可惜),随后Jac,然后wmh4分钟切出来了M,然后一起写B,我刚开始......
  • 【会议征稿,SPIE独立出版】第五届计算机视觉和数据挖掘国际学术会议(ICCVDM 2024)
    第五届计算机视觉与数据挖掘国际学术会议(ICCVDM2024)将于2024年7月19-21日在中国长春举行。此前,ICCVDM系列会议于2020年在中国西安、2021年在中国长沙(线上)、2022年在中国呼伦贝尔(线上+线下)、2023年在中国长春(线上+线下)皆已成功举办。ICCVDM为世界各地该领域的专家、学者、......
  • 赶紧收藏!2024 年最常见 20道 Redis面试题(九)
    上一篇地址:赶紧收藏!2024年最常见20道Redis面试题(八)-CSDN博客十七、如何使用Redis做异步队列?使用Redis作为异步队列主要依赖于Redis的列表(list)数据结构,列表提供了原子的推入(push)和弹出(pop)操作,这使得它非常适合实现队列。以下是使用Redis实现异步队列的步骤:准备Red......