如何用SQL语句删除check约束

来源:百度知道 编辑:UC知道 时间:2024/06/19 12:40:34
创建时的语句如下:

create table student2
(Sno char(9) primary key,
Sname char(8) not null,
Ssex char(2) check(Ssex in ('男','女')),
Sage smallint,
Sdept char(20)
)
lsg0012的方法没有效果啊, 齐齐飞飞和an1ju能不能再介绍得清楚点呢?因为我的check那里没有约束名啊!

另外,我用的SQL Server 2000

在查询分析器里边执行

alter table 表名
drop constraint 约束名

查看表的约束名执行

sp_helpconstraint 表名

第二个结果集就列出了表的约束,constraint_name就是约束名

或者执行
sp_help 表名

一般第三个结果集中constraint_name就表示相应的约束名。

CHECK 约束
[CONSTRAINT <constraint name>] CHECK (<condition> )
这 里CHECK子句中的CONDITION应该求值为一个布尔值结果,并且可以引用相同行中其他列的值;不能包含子查询,序列,环境函数(SYSDATE, UID,USER,USERENV)和伪列(ROWNUM,LEVEL,CURRVAL,NEXTVAL),一个列上可以定义多个CHECK约束,如果所 定义的条件为FALSE,则语句将回滚.
CREATE TABLE employees
(...,
salary NUMBER(8,2) CONSTRAINT emp_salary_min CHECK (salary>0),
...);
删除方式:
Alter table student2 drop(constraint "Ssex" check(约束名))

这里我给一个方法
注意一个前提,要删除约束,必须要知道它的约束名
首先你这里的CHECK没有约束名,这表示系统会自动给你生成一个约束名,所以你首先要查找这个约束名,可以用
sp_help student2
这个语句可以查看student2 表的所有属性,当然也包括约束名
然后就可以执行删除操作了
Alter table student2
drop constraint (约束名)
试试看吧

删除约束的语法如下:

Alter Table 表名