如果SQL中存在另一个字段,则对必填字段进行约束

时间:2014-01-20 18:36:58

标签: sql

我有以下两个表:

create table Person(
    FName varchar(15) not null
    ,LName varchar(25) not null
    ,Address varchar(100)
    ,City varchar(30)
    ,State varchar(30)
    ,Zip varchar(10)
    ,Phone varchar(15)
    ,Email varchar(60)
    ,UserID varchar(30)
    ,Password varchar(30) not null
    ,CCtype numeric(1) check (CCType >=3 and CCType <=6)
    ,CCNumber numeric check(CCNumber >= 15 and CCNumber <=16)
    ,primary key(UserID)
    ,constraint unique_email unique(Email)
);

create table Course(
    CourseId numeric(10,0)
    ,Name varchar(100) not null
    ,Start date not null
    ,[End] date not null
    ,Description varchar(255)
    ,Price numeric(5,2)
    ,Category varchar(30)
    ,TrainerID varchar(30)
    ,primary key(CourseId)
    ,constraint date_ck check([End] > Start)
    ,foreign key(TrainerID) references Person(UserID)
    ,constraint unique_combo unique(Name, Start)
);

我想创建一个约束,以便在存在CCNumber时,还必须存在有效​​的CCType。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

ALTER TABLE Person 
ADD CONSTRAINT CK_CCvalidity
CHECK 
(
    (CCType is null and CCNumber is null) 
    or 
    (
        (CCType >=3 and CCType <=6)
        and
        (CCNumber >= 15 and CCNumber <=16)
    )
)