SQL Server的检查约束询价

问题描述:

我有一个存储付款并希望确保如果付款方式是信用卡,然后卡类型字段应该是(“签证”,“万事达卡”,“发现”,“美国的表Express'),但是如果付款方式不是信用卡,那么卡类型字段应该为NULL。SQL Server的检查约束询价

将检查约束允许我使用如下语句:

(method = 'CC' AND cardType IN ('Visa', 'MasterCard', 'Discover', 'American Express')) 
OR 
(method != 'CC' AND cardType = NULL) 

因为限制应该也许只有被用来检查1场(不知道),我可能会用这一个是完全关闭基地。

此外,如果允许这样的陈述可能会有不利的表现打击?

编辑:我计划最终建立一个cardType领域,在我们的支付表的外键有cardType ......这只是一些我想在此期间

为什么不只是外键做的到另一张桌子并允许空位?

更妙的是ahve另一个表中的卡类型代码和存储关键了这一点。

+0

+1 - 绝对使用CardType表进行标准化,以引用CardType表。例如使用“美国运通”进行50,000次支付,与当前模式相比,这是800,000字节,而标准化方法相比超过50,000字节 – AdaTheDev 2009-07-17 15:56:59