积极答复者
请教关于CONSTRAINT完整性约束子句的问题。

问题
-
在Student表中,用 Add CONSTRAINT写出完整性约束子句
将ssex限制为只能取‘男’或者‘女’ ,年龄小于30
注:Student(sno,sname,ssex,sage)
我的语句:
ALTER TABLE Student
ADD CONSTRAINT Stm
CHECK(Ssex in ('男','女')),
CHECK(Sage>30)
报错: ALTER TABLE 语句与 CHECK 约束"Stm"冲突。该冲突发生于数据库"Grade",表"dbo.Student", column 'Ssex'。- 已编辑 柠檬布丁 2010年6月11日 13:00
答案
-
-- 针对每个字段单独设置约束 alter table tablename with nocheck -- 不验证表中的现有数据, 不加这个, 默认是要验证的 add constrant check1 check (sex='男' or sex='女'), constrant check2 check (Sage>30) ; -- 直接在表级别上设置约束 alter table tablename with nocheck -- 不验证表中的现有数据, 不加这个, 默认是要验证的 add constrant check1 check ( (sex='男' or sex='女') and Sage>30) ;
- 已标记为答案 柠檬布丁 2010年6月12日 13:48
全部回复
-
作业?
alter tablename
add constrant check1 check (sex='男' or sex='女')
这几个都很简单的问题,建议你自己对这帮助自己写吧?写不出来在把问题发上来?
family as water我会写的,也是这样写的,但报错所以想确认一下到底怎么写,查了联机丛书太简略了。
老是报这样的错误:
ALTER TABLE 语句与 CHECK 约束"Stm"冲突。该冲突发生于数据库"Grade",表"dbo.Student", column 'Ssex'。
注 Stm是约束名。语句分析没问题,就是执行错误。
-
在Student表中,用 Add CONSTRAINT写出完整性约束子句
将ssex限制为只能取‘男’或者‘女’ ,年龄小于30
注:Student(sno,sname,ssex,sage)
我的语句:
ALTER TABLE Student
ADD CONSTRAINT Stm
CHECK(Ssex in ('男','女')),
CHECK(Sage>30)
报错: ALTER TABLE 语句与 CHECK 约束"Stm"冲突。该冲突发生于数据库"Grade",表"dbo.Student", column 'Ssex'。
可能是你的Student表的Ssex列里已经有了除了 '男'和'女'以外的值 ..所以要定义这个CHECK约束
先 DELETE Student where Ssex not in ('男','女')
-
在Student表中,用 Add CONSTRAINT写出完整性约束子句
将ssex限制为只能取‘男’或者‘女’ ,年龄小于30
注:Student(sno,sname,ssex,sage)
我的语句:
ALTER TABLE Student
ADD CONSTRAINT Stm
CHECK(Ssex in ('男','女')),
CHECK(Sage>30)
报错: ALTER TABLE 语句与 CHECK 约束"Stm"冲突。该冲突发生于数据库"Grade",表"dbo.Student", column 'Ssex'。
可能是你的Student表的Ssex列里已经有了除了 '男'和'女'以外的值 ..所以要定义这个CHECK约束
先 DELETE Student where Ssex not in ('男','女')
还有一个办法在建立约束的时候,不检查。
family as water -
-- 针对每个字段单独设置约束 alter table tablename with nocheck -- 不验证表中的现有数据, 不加这个, 默认是要验证的 add constrant check1 check (sex='男' or sex='女'), constrant check2 check (Sage>30) ; -- 直接在表级别上设置约束 alter table tablename with nocheck -- 不验证表中的现有数据, 不加这个, 默认是要验证的 add constrant check1 check ( (sex='男' or sex='女') and Sage>30) ;
- 已标记为答案 柠檬布丁 2010年6月12日 13:48