문제

I have a table Transactions where I am saving two records for one transaction, one for debiting and other crediting.

So I have two columns in table creditAmount(Money) and debitAmount(Money).

I want a table level constraint that either of the column is not null in each row. i.e. If row #3 creditAmount is null then debitAmount must hold some value and Vice Versa.

How to ensure the same when inserting a record in a row?

도움이 되었습니까?

해결책

You can add a CHECK constraint to the table:

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))

다른 팁

If you are handling via Front-end (your application), then the issue of both Credit and Debit being null won't arise. At least one entry is inserted, either in Debit or Credit.

I guess you want to put a constraint when someone is handling via back-end and directly inserting values in a table. In that case, Chris suggested a solution.

But even if you are inserting from back-end, I am not following why I would record a transaction when neither it is Debit nor Credit.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top