我有一个表 Transactions ,其中我为一笔交易保存两条记录,一条用于借记和其他贷记。
creditAmount(Money)
所以我在 table和中有两列debitAmount(Money)
。
我想要一个表级约束,即每行中的任一列都不为空。即,如果第 3creditAmount
行为空,则debitAmount
必须保存一些值,反之亦然。
连续插入记录时如何确保相同?
我有一个表 Transactions ,其中我为一笔交易保存两条记录,一条用于借记和其他贷记。
creditAmount(Money)
所以我在 table和中有两列debitAmount(Money)
。
我想要一个表级约束,即每行中的任一列都不为空。即,如果第 3creditAmount
行为空,则debitAmount
必须保存一些值,反之亦然。
连续插入记录时如何确保相同?
您可以向表中添加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))
如果您通过前端(您的应用程序)进行处理,则不会出现 Credit 和 Debit 都为空的问题。至少插入一个条目,在借方或贷方中。
我想当有人通过后端处理并直接在表中插入值时,你想设置一个约束。在这种情况下,克里斯提出了一个解决方案。
但是,即使您是从后端插入,我也不会理解为什么我会在既不是借方也不是贷方的情况下记录交易。