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) )?坐等解释帝

解决方案 »

  1.   


    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))*/
    可以创建多个。刚试了。
      

  2.   

    楼主,如果我说我这里用sql server2005都能正确添加约束你信不?