ALTER TABLE 与 CHECK 冲突问题

时间:2022-09-01 00:36:52
CREATE TABLE 测试_非空性是否可以插入
(
 马甲    INT   NOT NULL ,
 路人    INT       NULL ,
 打酱油  INT   NOT NULL 
 CONSTRAINT DEFAULT_测试_打酱油 DEFAULT 0 ,
 )
一:这条可以通过
 ALTER TABLE 测试_非空性是否可以插入
 ADD CONSTRAINT CHECK_测试_非空性是否为空 CHECK( 路人>10 OR 路人<100)
二:以下语句不可通过:
------------------------------------------------------------------------------------------------
  ALTER TABLE 测试_非空性是否可以插入
 ADD CONSTRAINT CHECK_测试_非空性是否为空_01 CHECK( 路人>=10 AND 路人<=100)
/*
                 -----------------
报错:ALTER TABLE 语句与 CHECK 约束"CHECK_测试_非空性是否为空_01"冲突,表"dbo.测试_非空性是否可以插入", column '路人'/*
-------------------------------------------------------------------------------------------------
 ALTER TABLE 测试_非空性是否可以插入
 ADD CONSTRAINT CHECK_测试_非空性是否为空_02 CHECK( 马甲>=10 AND 马甲<=100)
报错:
报错:ALTER TABLE 语句与 CHECK 约束"CHECK_测试_非空性是否为空_02"冲突,表"dbo.测试_非空性是否可以插入", column '马甲'/*

---------------------------------------------------------
问题:
ALTER TABLE 与CHECK 为啥会冲突?
插一条语句,是先检查约束,CHECK 触发器么? 列属性为非空 ,但是设置了默认值,在插入时候忽略该值可以通过
( INSERT INTO 测试_非空性是否可以插入(马甲,路人) --VALUES(4,5) )?

坐等解释帝

4 个解决方案

#1


该回复于2011-03-28 08:52:58被版主删除

#2



create table t(
路人 int 
)
;
go


alter table t add constraint ck_c check(路人>10 or 路人<100)

alter table t add constraint ck_c2 check(路人%2=1)

alter table t add constraint ck_c3 check(路人>=10 or 路人<=100)

exec sp_help t;

/*
constraint_type         constraint_keys
----------------------- -----------------------------------
CHECK on column 路人   ([路人]>(10) OR [路人]<(100))
CHECK on column 路人   ([路人]%(2)=(1))
CHECK on column 路人   ([路人]>=(10) OR [路人]<=(100))

*/


可以创建多个。刚试了。

#3


有约束啊  当然不能修改表了

#4


楼主,如果我说我这里用sql server2005都能正确添加约束你信不? ALTER TABLE 与 CHECK 冲突问题

#1


该回复于2011-03-28 08:52:58被版主删除

#2



create table t(
路人 int 
)
;
go


alter table t add constraint ck_c check(路人>10 or 路人<100)

alter table t add constraint ck_c2 check(路人%2=1)

alter table t add constraint ck_c3 check(路人>=10 or 路人<=100)

exec sp_help t;

/*
constraint_type         constraint_keys
----------------------- -----------------------------------
CHECK on column 路人   ([路人]>(10) OR [路人]<(100))
CHECK on column 路人   ([路人]%(2)=(1))
CHECK on column 路人   ([路人]>=(10) OR [路人]<=(100))

*/


可以创建多个。刚试了。

#3


有约束啊  当然不能修改表了

#4


楼主,如果我说我这里用sql server2005都能正确添加约束你信不? ALTER TABLE 与 CHECK 冲突问题