文档库

最新最全的文档下载
当前位置:文档库 > 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

DELETE xscj FROM xscj,deleted

WHERE xscj.课程号=deleted.课程号

GO

3、创建触发器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

我们可以通过修改某门课的课程号,来查看触发器是否被激发执行了。现在通

过一个语句修改原课程号为“101”的学生课程表中的记录,将其课程号改为“111”:UPDATE xskc

SET 课程号=’111’

WHERE 课程号=’101’

然后,再查看一下学生成绩表中的记录。可以看到原来的“101”课程的课程号均改成了“111”,但课程名不变,还是“计算机文化基础”。

2、修改触发器

如果需要修改触发器的定义,只需一个操作即可除去并重新创建触发器,或重新定义已有触发器。

如果更改触发器引用的对象名,则必须修改触发器使其文本反映新的名称。因此,在重命名对象前,首先显示该对象的相关性,以确定所建议的更改是否会影响任何触发器。

也可以重命名触发器。新名称必须遵守标识符规则。您只能重命名自己拥有的触发器,而数据库所有者可以更改任意用户的触发器名称。需重命名的触发器必须位于当前数据库中。

可以使用ALTER TRIGGER语句修改触发器。

4、如果已通过例9.2创建了触发器trigger_9_2,现要对它进行修改,要求显示的提示信息改为“学生课程表中课程号为XXX的记录被修改了”。

可以在查询分析器的查询窗口中使用ALTER TRIGGER语句修改触发器,语句如下:

USE 学生成绩库

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

执行后,触发器即被删除。