SQL——触发器

  1. 创建和执行存在student表中,设计学号的长度为10位,但如果录入小于10位的学号信息也是可以保存的,为保证学号位数的一致性,限制学号长度必须为10位。建立触发器,名为“学号长度”。
CREATE TRIGGER 学生长度
on student 
for insert
as
declare @学号 char(10)
  1. 录入一个学号小于10位的学生信息(数据自拟),观察运行结果。
Insert into student values(20150940,'两家米','女','1999-05-20',559,0,null,null,201501)
3.	为表student创建一个触发器trig_up。要求:若向表student中插入或修改记录时,限制其入学期成绩不能低于400分,否则不允许操作。
CREATE TRIGGER trig_up
on student
after insert,update
as
if  (select 入学成绩 from inserted) < 400
rollback
  1. 执行命令“insert student(学号,姓名,性别,出生日期,入学成绩,党员否,班级编号)values(‘2015094030’,‘张大民’,‘男’,‘1997-1-1’,389,0,‘201501’)”,观察结果。
Insert into student values('2015094030','张大民','男','1997-1-1',389,0,null,null,'201501')

事务在触发器中结束。批处理已中止。
5. 执行命令update student set 入学成绩=390 where 姓名=‘张楚’,观察结果。

事务在触发器中结束。批处理已中止。

  1. 为表student创建一个触发器trig_del,要求不允许从表student中删除党员记录。
CREATE TRIGGER trig_del
on student
after delete
as
if (select 党员否 from deleted) = 1
Rollback
  1. 执行命令“delete from student where 姓名=‘程超楠’,观察结果。

事务在触发器中结束。批处理已中止。

  1. 创建触发器trig_del_course,要求删除某门课程时,同时删除选择此门课程的所有选课记录(注意:执行前做好数据备份)。
Create trigger trig_del_course
On course
For delete
As
If exists(select * from score where 课程编号=(select 课程编号 from deleted))
  begin
    delete from score where 课程编号=(select 课程编号 from deleted)
  end
发布了5 篇原创文章 · 获赞 9 · 访问量 208

猜你喜欢

转载自blog.csdn.net/Carmen__Leung/article/details/105122310
今日推荐