实验4

发布时间 : 星期二 文章实验4更新完毕开始阅读

实验八使用触发器实现数据完整性

一,实验目的

使学生理解用触发器实现数据完整性的重要性,掌握用触发器实现数据完整性的方法,掌握用触发器事先参照完整性的方法,并理解触发器与约束的不同。 二,实验内容

(1)为表建立触发器,实现域完整性,并激活触发器进行验证。

(2)为表建立级联更新的触发器,实现参照完整性,并激活触发器进行验证。 (3)比较约束与触发器的出现顺序。 三,实验指导

1.创建ZIKUI数据库的表S的INSERT触发器tri_INSERT_S,插入年龄在15-30之间的记录。

(1) 打开SQL Server Management Studio 窗口

(2)单击标准工具栏上的新建查询按钮,打开查询编辑器窗口

(3)在窗口中直接输入一下CREATE TRIGGER语句创建一个INSERT触发器。如下图:

USEJXGL

GO

CREATETRIGGERtri_INSERT_SONS

FORINSERT

AS

DECLARE@S_agetinyint SELECT@S_age=S.age

FROMS

IF@S_ageNOTBETWEEN 15 AND 30

ROLLBACKTRANSACTION

GO

图8.1 创建一个INSERT触发器

(2)在表中分别插入两行记录以激活该触发器,第一行年龄在15-30之内,第二行年龄的值在15-30以外。如下图:

USEJXGL

GO

INSERTINTOS

VALUES('40','王晓杰',21,'W','MA')

INSERTINTOS VALUES('41','邵庆国',14,'M','IS')

GO

图8.2 插入记录激活触发器

2.1创建JXGL数据库的表S的DELETTE触发器tgr_s_delete,当删除S表中的记录时触发该触发器。如下图:

USEJXGL

GO

CREATETRIGGERtgr_s_delete

ONS FORDELETE

AS

PRINT'备份数据中……'

IF(object_id('s_backup','U')isnotNULL) INSERTINTOS_backupSELECTsno,snamefromdeleted

ELSE

SELECT*INTOS_backupFROMdelected

PRINT'数据备份成功'

GO

图8.3删除记录触发该触发器

2.2 删除表S的记录.如下图:

useJGXL

go

deleteSwheresno='14'

select*fromS select*fromS_backup

go

图8.4删除表S的记录

2.3返回DDL触发器的对象标号.如下图:

selectOBJECT_ID fromsys.triggers

wherename='databasetriggerlog'

Go

图8.5返回DDL触发器的对象标号

2.4返回adventtureworks2008数据库中的production.workorder表的对象ID.如下图:

usemaster

go

selectOBJECT_ID('adventureworks2008.production.workorder')

as'object id'

go

图8.6返回adventtureworks2008数据库中的production.workorder表的对象ID

2.5通过验证表是否具有对象ID来检查制定表的存在。如果该表存在,将其删除;如果不存在,则不执行DROP TABLE语句。如下图:

usemaster

go

ifOBJECT_ID('dbo.awbuildversion','u')isnotnull

droptabledbo.awbuildversion

go

图8.6验证表是否具有对象ID来检查制定表的存在

2.6 使用sys.dm_db_index_operational_stats()函数返回adventureworks2008数据库中的person.address表的所有索引和区分信息。如下图:

usemaster

go

declare@db_idint declare@object_idint

set@db_id=DB_ID('adventureworks2008')

set@object_id=object_id('adventureworks2008.person.address')

if@db_idisnull

printN'invalid database' elseif@object_idisnull

联系合同范文客服:xxxxx#qq.com(#替换为@)