我有下表:
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) unique
,UserID varchar(30)
,Password varchar(30) not null
,CCtype varchar(8)
,CCNumber varchar(16)
,primary key(UserID)
);
而且我想写一个限制,如果有CCNumber,CCType不能为空。反过来就好了。如果我有类型,我可能没有数字,那没关系。 我已经尝试了这些约束,但在我测试时两者都没有按预期工作。
,constraint CCNumber_no_CCType check((CCNumber is null) or (CCType is null))
或
,constraint CCNumber_no_CCType check((CCNumber is not null) and (CCType is null))
最佳答案
你想要的约束是:
constraint CCNumber_no_CCType check((CCNumber is null) or (CCType is not null))
这是一种更通用的思考方式。如果您有“如果 A --> B”,那么当 B 为真或 A 不为真时,这为真。
关于一个表中的列之间的 SQL Server 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265021/