SQL数据库实训报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql数据库实训报告”。
附件:
1、创建触发器
1、创建触发器trigger_9_1,实现当修改学生课程表(xskc)中的数据时,显示提示信息“学生课程表被修改了”。
在学生课程表上建立触发器,具体操作如下: 在查询分析器的查询窗口中,输入如下T-SQL语句: USE 学生成绩库 GO CREATE TRIGGER trigger_9_1 ON xskc FOR UPDATE AS
PRINT ‘学生课程表被修改了’ GO 执行后,在学生课程表上触发器trigger_9_1创建成功。
2、创建触发器trigger_9_3,实现当删除学生课程表中某门课程的记录时,对应学生成绩表中所有有关此课程的记录均删除。
可以在查询分析器的查询窗口中输入如下语句: USE 学生成绩库 GO CREATE TRIGGER trigger_9_3 ON xskc FOR DELETE AS
C程序设计 实训
DELETE xscj FROM xscj,deleted WHERE xscj.课程号=deleted.课程号 GO3、创建触发器trigger_9_4,实现当修改学生课程表(xskc)中的某门课的课程号时,对应学生成绩表(xscj)中的课程号也作修改。
当修改学生课程表中记录时,相当于删除一条旧记录并插入一条新记录,删除的旧记录在deleted临时表中,插入的新记录在inserted临时表中。因此,可以通过在查询分析器的查询窗口中输入如下语句创建触发器:
USE 学生成绩库 GO CREATE TRIGGER trigger_9_4 ON xskc FOR UPDATE AS
IF update(课程号)BEGIN UPDATE xscj
SET 课程号=(SELECT 课程号 FROM inserted)FROM xscj,deleted WHERE xscj.课程号=deleted.课程号 END GO 我们可以通过修改某门课的课程号,来查看触发器是否被激发执行了。现在通
C程序设计 实训
过一个语句修改原课程号为“101”的学生课程表中的记录,将其课程号改为“111:”
UPDATE xskc SET 课程号=’111’ WHERE 课程号=’101’
然后,再查看一下学生成绩表中的记录。可以看到原来的“101”课程的课程号均改成了“111”,但课程名不变,还是“计算机文化基础”。
2、修改触发器
如果需要修改触发器的定义,只需一个操作即可除去并重新创建触发器,或重新定义已有触发器。
如果更改触发器引用的对象名,则必须修改触发器使其文本反映新的名称。因此,在重命名对象前,首先显示该对象的相关性,以确定所建议的更改是否会影响任何触发器。
也可以重命名触发器。新名称必须遵守标识符规则。您只能重命名自己拥有的触发器,而数据库所有者可以更改任意用户的触发器名称。需重命名的触发器必须位于当前数据库中。
可以使用ALTER TRIGGER语句修改触发器。
4、如果已通过例9.2创建了触发器trigger_9_2,现要对它进行修改,要求显示的提示信息改为“学生课程表中课程号为XXX的记录被修改了”。
可以在查询分析器的查询窗口中使用ALTER TRIGGER语句修改触发器,语句如下:
USE 学生成绩库
C程序设计 实训
GO ALTER TRIGGER trigger_9_2 ON xskc FOR UPDATE AS
DECLARE @kch char(3)SELECT @kch=课程号 FROM deleted PRINT ‘学生课程表中课程号为’+@kch+’的记录被修改了’ GO 触发器被修改,再执行下述更新语句: UPDATE xskc SET 学分=5 WHERE 课程号='101' 可以在结果窗格中,看到消息:“学生课程表中课程号为101的记录被修改了”。
3、删除触发器
当不再需要某个触发器时,可将其删除。当触发器被删除时,它所基于的表和数据并不受影响。删除表将自动删除其上的所有触发器。删除触发器的权限默认授予在该触发器所在表的所有者。
可以使用DROP TRIGGER语句删除触发器。
5、删除学生课程表上的触发器trigger_9_2。
在查询分析器的查询窗口中输入语句: DROP TRIGGER trigger_9_2 执行后,触发器即被删除。
C程序设计 实训