如何创建互斥的表列

Max*_*ion 9 t-sql sql-server mutual-exclusion sql-server-2012

我有一个表交易,我在一个交易中保存两个记录,一个用于借记和其他贷记.

所以,我有表两列creditAmount(Money)debitAmount(Money).

我想要一个表级约束,每列中的任何一列都不为空.即如果第3行为creditAmount空则debitAmount必须保留一些值和反之亦然.

连续插入记录时如何确保相同?

Chr*_*tal 18

您可以向表中添加CHECK约束:

ALTER TABLE Transactions ADD CONSTRAINT CK_Transactions_DebitOrCreditExists
CHECK ((creditAmount IS NULL AND debitAmount IS NOT NULL) 
   OR (creditAmount IS NOT NULL AND debitAmount IS NULL))
Run Code Online (Sandbox Code Playgroud)