文档详情

数据完整性ok.doc

发布:2017-01-31约4.09千字共6页下载文档
文本预览下载声明
(1)设置teacher表中tsex的取值只能是男或女,分别插入违反约束操作和合法操作进行验证;测试验证后,请删除该约束。 ALTER TABLE Teacher ADD CONSTRAINT ts_sex CHECK (Tsex IN(男,女)); 合法操作约束 INSERT INTO Teacher(TID,Tname,Tsex) VALUES(111,张三,男); SELECT * FROM Teacher 违法操作约束 INSERT INTO Teacher(TID,Tname,Tsex) VALUES(121,张三,1); DELETE Teacher WHERE TID = 111; 分析:输入的是除 男 或 女 以外的字符,所以出错 删除约束条件 ALTER TABLE Teacher DROP CONSTRAINT ts_sex; (2)、设置teacher表中的tdept的取值默认为SE ALTER TABLE Teacher ADD CONSTRAINT default_tdept DEFAULT SE FOR Tdept; 默认值验证 INSERT INTO Teacher(TID,Tname) VALUES(123,小雅); SELECT * FROM Teacher 非默认值验证 INSERT INTO Teacher(TID,Tname) VALUES(123,小雅,CH); SELECT * FROM Teacher 分析:默认值为SE,但键入的是CH,与默认值不符 DELETE Teacher WHERE TID = 123; ALTER TABLE Teacher DROP CONSTRAINT default_tdept; (3)定义rule_sex只能是男或女,将此规定绑定到表student的ssex属性 CREATE RULE sex_rule AS @Ssex = 男 OR @Ssex = 女 EXEC sp_bindrule sex_rule,Student.Ssex 合法约束 INSERT INTO Student(Sno,Sname,Ssex) VALUES(123,小雅,男); SELECT * FROM Student 非法约束 INSERT INTO Student(Sno,Sname,Ssex) VALUES(123,李四,1); DELETE Student WHERE Sno = 123 分析:通过student表中的sno能够查到已经有学生学号123的存在,所以新的学生的学号不能为123 (4)、定义默认对象default_dept,默认值为SE,将默认对象绑定到student的sdept属性 CREATE DEFAULT Default_dept AS SE; EXEC sp_bindefault Default_dept,Student.Sdept 合法操作 INSERT INTO Student(Sno,Sname,Ssex) VALUES(111,李四,女); SELECT * FROM Student 非合法操作 INSERT INTO Student(Sno,Sname,Ssex) VALUES(123,李四,女); SELECT * FROM Student 分析:在对象中原本有sno=111,插入sno=123重复插入 DELETE Student WHERE Sno = 111 (5)、验证级联删除约束 ALTER TABLE SC ADD CONSTRAINT FK_C FOREIGN KEY(Cno) REFERENCES Course(Cno) ON UPDATE NO ACTION 1、向sc表输入合法元素 SELECT * FROM SC INSERT INTO SC VALUES (20121323012,N001,83); INSERT INTO SC VALUES (123,C002,81); 向sc表输入非合法元素 INSERT INTO SC VALUES (124,C002,81); 分析:插入的学生学号不能在student表里查到,所以不能进行插入 2、定义course表和sc表之间的参照完整性约束,在delete行为上建立cascade级联 删除sc表的约束 ALTER TABLE SC DRO
显示全部
相似文档