数据库(SQL-T)之 触发器的学习

---创建学生表(son学号 sname姓名 ssex性别 smajor专业 sage学号)
create table student
(      
    sno char(20) not null primary key,
	sname char(20) not null,
	ssex char(2) not null default '男',
	smajor char(12) null,
	sage int null
);
---创建学生信息
insert into student
values('2023006','欧阳明月','男','计算机',19),
('2023001','张三','男','计算机',19),
('2023002','李四','男','物理',20),
('2023003','王五','男','化学',23),
('2023004','李华','女','计算机',20),
('2023005','冯涛','男','通信',19);
select *from student;
---创建选课表(sno学号 cno课号 grade成绩)
create table sc
(
sno char(20) not null,
cno char(4) not null,
grade tinyint null,
);

--1、创建触发器
--[例1]Student中创建DML触发器stu_unupdate,禁止修改学号Sno、姓名Sname字段。
go
create trigger stu_unupdate on student
after update
as
  --执行语句
  if update(sno) or update(sname)
  print('禁止修改学号 姓名')
  rollback;
go

--触发语句
update student
set sno ='002'
where sno ='2023002'

--[例2] 在teach数据库的“学生”表Student中创建DML触发器stu_insert,
--给表中每添加一条信息时,自动查看所有学生信息
go
create trigger stu_insert on student
after insert
as
   --执行语句
   select *from student
go

--触发语句
insert into student(sno,sname)
values('2023023','赵'),('20239999','王柳');


--[例3]创建触发器,实现禁止删除课程号为1的课程信息
go
create trigger cou_cno on course
after delete
as
  --执行语句
  if delete (cno=1)
  print('禁止删除课程号为1的课程信息')
  rollback;
go



--[例4]设计一个触发器完成上述功能:假设student表, 
--当删除某一同学sno时,该同学的所有选课也都要删除。
go
create trigger stu_delete on student
after delete
as
  --执行语句
  --定义变量,代表删除的学号
  declare @sno_old varchar(20)
  --初始化
  select @sno_old = sno from deleted
  delete from sc
  where sc.sno = @sno_old
go

--触发语句
delete from student
where sno ='2023005'

select *from student


--[例5]创建触发器,假设student表中某一学生要变更其主码sno的值,
--如使其原来的20210023变更为20210056, 
--此时sc表中该同学已选课记录的sno也需自动随其改变。
go
create trigger stu_update on student
after update
as
   --执行语句
   --定义2个变量,代表修改前、修改后的学号
   declare @sno_old varchar(20)
   declare @sno_new varchar(20)
   --初始化
   select @sno_old = sno from deleted
   select @sno_new = sno from inserted
   update sc
   set sc.sno = @sno_new
   where sc.sno =@sno_old


--触发语句
update student
set sno='666'
where sno ='2023001'

云探网文章。发布者:ziqiu,转转请注明出处:https://www.zeauo.cn/archives/4035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年4月11日
下一篇 2023年4月14日

相关推荐

  • 网站多次切换服务器ip,站群多ip服务器怎么切换ip?

    租多ip服务器的主要目的是,有时候用服务器采集别处的内容被封了IP,我们就经常碰到。这时候我们就要换服务器主IP才可以继续采集,下面跟大家讲下多ip服务器怎么切换ip的方法,这个方法只对多IP的服务器有效,只有一个IP的服务器需要联系服务器所在机房更换。 在站群服务器进行操作前&#xff0…

    2023年8月31日
    1100
  • CDN防护和高防服务器哪个更适合网站?

    疫情让越来越多的个人和企业,把业务搬上了互联网,面对愈发严峻的网络安全态势,为了应对线上安全风险,企业在关注线上业务的流畅、稳定的同时,也要构建多层次纵深防护体系,从各个层面建立响应的应对措施和防护机制。企业线上业务需要构建网站防御体系,CDN防护和高防服务器哪…

    服务器推荐 2023年8月8日
    1500
  • 百度自然搜索排名是否存在人工干预

    很多人都认为做百度竞价就会很好的提升百度自然搜索排名,还有种说法就是网站在做百度竞价期间,百度自然搜素有排名,但是只要百度竞价一停下来,没几天自然搜索排名就没了,对于像这样的现象很多人都认为是百度内部人工在干预。 他们就认为百度竞价搜索与百度快照都是百度自家产品,而百度竞价搜索这块业务又是百度的主要收益来源,百度快照排名是免费获取,不需向百度缴纳推广费用,站…

    2023年8月17日
    2100
  • 网络投资是一场持久的博弈,赢在心态

    网络很神奇,它把天南地北各个行业的人联系到了一起,于是有了高端的网络营销圈子和低端的网赚圈子,这里的低端没有贬低的意思,仅仅是为了区别,从根本上来说,网络营销圈子浮现于大众眼前,代表着互联网的时代,网赚圈子就像网络营销圈子幼儿时期的样子,当网赚圈子到了一定阶段就演变成了网络营销圈子。 那么网赚圈子如何成长到网络营销圈子呢?这个定义很模糊,古董的理解就是网赚圈…

    2023年8月27日
    3510
  • LightNode:保加利亚索菲亚VPS,1核/2G/1T流量/$7.7/月,小时付费

    LightNode成立于2002年总部位于香港的服务商。LightNode的节点遍布全球五大洲、19个国家,共有23个节点可供选择。 包含以下国家和地区:中国港台、韩国、日本、泰国、越南、新加坡、柬埔寨、菲律宾、孟加拉、阿联酋迪拜、沙特、德国、土耳其、美国、巴西、南非、埃及、巴林、保加利亚。 最低月付 $7.71,按时计费,流量单项计费。充 $10就可以开无…

    2023年8月7日
    1500

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

ziqiu666@qq.com

在线咨询: QQ交谈

邮件:ziqiu666@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

云探网www.zeauo.cn