- 151
- 0
- 约1.87千字
- 约 3页
- 2017-07-09 发布于河南
- 举报
实验6触发器答案
《数据库系统概论》实验报告6
题目: TRIGGER 姓名 学号 日期
实验目的
1、掌握和使用企业管理器创建、修改、删除触发器
2、掌握和使用sql创建、修改、删除触发器
3、掌握触发器的执行
实验内容:
1、用企业管理器为表s创建一级联更新触发器trigger_s,要求:若修改s表中一学生的学号,则表sc中与该学生相关的学号自动修改CREATE TRIGGER trigger_s ON s
FOR UPDATE
AS
if UPDATE(sno)
begin
declare @sno_new char(10),@sno_old char(10)
select @sno_new=sno from inserted
select @sno_old=sno from deleted
update sc set sno=@sno_new where sno=@sno_old
end
2、用企业管理器为表sc创建一限制更新触发器trigger_sc,要求:若修改sc表中一学生的学号,则要检查表s中是否存在与该学生相同的记录,若有则不许修改,若没有则可以。
CREATE TRIGGER trigger_sc ON sc
FOR uPDATE
AS
if update(sno)
begin
declare @sno_new char(10),@SNO_OLD CHAR(10),@SNO_CNT INT
SELECT @SNO_OLD=SNO FROM DELETED
SELECT @SNO_CNT=COUNT(*) FROM S WHERE SNO=@SNO_OLD
IF @SNO_CNT0
ROLLBACK TRANSACTION
END
3、用sql为表ss创建一触发器trigger_sc_tri,要求:当插入记录或修改成绩时,确保此记录的成绩在0到100之间。
USE STUDENT
GO
CREATE TRIGGER SCORE_SC_TRI
ON SC FOR INSERT,UPDATE
AS
DECLARE @SCORE_READ TINYINT
SELECT @SCORE_READ=SCORE FROM INSERTED
IF @SCORE_READ=0 AND @SCORE_READ =100
BEGIN
PRINT CAOZUOCHENGGONG!
RETURN
END
PRINT CHENGJI NOT IN 0-100
ROLLBACK TRANSACTION
GO
4、用sql为表c创建一级联删除触发器trigger_dc,要求:通过课程名从表c中则删除某课程信息,同时删除表sc中与此课程相关的选课记录。
use st
go
create trigger trigger_dc
on c for delete
as declare @cno_del char(10)
select @cno_del=cno from deleted
delete from sc where cno=@cno_del
go
5、用sql修改表c的触发器trigger_dc;通过课程名从表c中删除某课程信息,同时删除表sc和表tc中与此课程相关的记录。
use student
go
alter trigger trigger_dc
on c for delete
as declare @cno_del char(10)
select @cno_del=cno from deleted
delete from sc where cno=@cno_del
delete from tc where cno=@cno_del
go
6、用企业管理器修改触发器trigger_s,要求:若删除表s中某一个学生的记录信息,则自动删除表sc中与学生相关的记录信息。
create trigger trigger_s
on s for delete
as declare @sno_del char(10)
select @sno_del =sno from deleted
delete from sc where sno=@sno_del
7、用企业管理器删除触发器trigger_s
8、用sql删除表c的触发器trigger_dc
use student
drop trigger trigger_dc
go
原创力文档

文档评论(0)