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