- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
长沙理工大学数据完整性(实验报告)
长 沙 理 工 大 学
计算机与通信工程学院
实 验 报 告
课程名称 数据库原理与技术
实验项目名称 数据完整性
班级
学号 姓名
实验日期 年 月 日
指导教师签字
一﹑实验目的
掌握SQL Server管理平台和Transact-SQL语句(Create table、alter table)定义和删除约束的方法,并了解约束的类型。
掌握通过SQL Server管理平台和Transact-SQL语句Create trigger创建触发器的方法和步骤;
掌握引发触发器的方法;
掌握使用SQL Server管理平台或Transact-SQL语句修改和删除触发器; 二﹑实验平台
操作系统:Windows xp
DBMS:SQL Server 2005
三﹑实验内容和步骤
1.在studentsdb数据库中用CREATE TABLE语句创建表stu_con,并同时创建约束。
(1)创建表的同时创建约束。表结构如图1所示。
图1 要创建的表的结构
约束要求如下:
将学号设置为主键(PRIMARY KEY),主键名为pk_sid。
为姓名添加唯一约束(UNIQUE),约束名为uk_name。
为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”。
为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:出生日期1988-1-1。
(2)使用ALTER TABLE语句的DROP CONSTRAINT参数项在查询设计器中删除为stu_con表所建的约束。
2.为studentsdb数据库的grade表添加外键约束(FOREIGN KEY),要求将“学号”设置为外键,参照表为student_info,外键名称为fk_sid。
3.为grade表建立一个名为insert_g_tr 的INSERT触发器,当用户向grade表中插入记录时,如果插入的是在curriculum表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入成功。在进行插入测试时,分别输入以下数据:
学号 课程编号 分数
0004 0003 76
0005 0007 69
观察插入数据时的运行情况,说明为什么?
变量定义:DECLARE @fkc_id varchar(8)
提示记录插入成功:PRINT ‘记录插入成功’
提示不能插入记录:RAISERROR(‘无此课程,不能插入记录’,16,1)
4.为curriculum表创建一个名为del_c_tr的DELETE触发器,该触发器的作用是禁止删除curriculum表中的记录。
CREATE TRIGGER del_c_tr
ON curriculum
Instead of delete
AS
RAISERROR(‘禁止删除curriculum表中的记录’)
ROLLBACK TRANSACTION
5.为student_info表创建一个名为update_s_tr的UPDATE触发器,该触发器的作用是禁止更新student_info表中的“姓名”字段的内容。
CREATE TIGGER update_s_tr ON student_info
FOR UPDATE
AS
DECLARE @name_old varchar(8)
DECLARE @name_new varchar(8)
SET @name_old=(SELECT 姓名 FROM Deleted)
SET @name_new=(SELECT 姓名 FROM Inserted)
IF (@name_old!=@name_new)
BEGIN
RAISERROR(‘不能修改姓名’,16,1)
END
6.使用Transact-SQL语句DROP TRIGGER删除update_s_tr触发器。
DROP TRIGGER student_info.uodate_s_tr
7.为student_info表建立删除触发器del_s_tr,要求当student_info表的记录被删除后,grade表中相应的记录也能自动删除。
CREATE TIGGER del_s_tr ON student_info
FOR DELETE
AS
DECLARE @stu_no v
文档评论(0)