(
马甲 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
#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都能正确添加约束你信不?
#1
#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都能正确添加约束你信不?