如何设置表中的列以相对于同一个表的其他列的行为

时间:2014-01-12 21:41:15

标签: sql sql-server database

我正在创建一个包含名为“付款”的表格的数据库。在此表中,您可以使用三种方法付款,其中一种方法是信用卡。让我使用下表来更好地说明,表名是payment.payments

PaymntID | creditcardnumber | creditcardexpdate | Creditcardholdersname | PaymentMethodID

现在,我的任务是,如果信用卡不是付款方式,则将creditCardnumber,creditCardExpDate和Creditcardholdersname保留为空,否则,不应将任何列留空。仍然没有解决方案。谢谢

1 个答案:

答案 0 :(得分:1)

您正在寻找check个约束。在create table语句中,这些看起来像:

check (method <> 'cc' and cc_col1 is null and cc_col2 is null and cc_col3 is null and cc_col4 is null),
check (method = 'cc' and cc_col1 is not null and cc_col2 is not null and cc_col3 is not null and cc_col4 is not null)

您也可以使用alter table添加它们。