2017-02-15 4 views
0

Ich habe folgendes zu tun, indem Sie eine Check-Einschränkung auf die Tabelle um:Boolesche Logik in SQL

In Mieter, wenn LeaseExpirationDate nicht NULL ist, dann muss es später als LeaseStartDate sein.

Ich frage mich nur, kann ich die folgenden in SQL verwenden?

P: LeaseExpirationDate ist nicht null T: LeaseExpirationDate später als LeaseStartDate

P-> T == - P OR T

Wahrheitstabelle

P  T  P->T=-P OR X 
T  F    F 
F  U   T 
T  T    T 

Ich bin nicht sicher wenn wir letzteres mit dreierlei Logik tun können, aber es sieht so aus, als ob es unter den gegebenen Bedingungen funktioniert.

Antwort

2

Nutzen Sie SQL der dreiwertigen Logik und die Tatsache, dass ein Check-Einschränkung nicht FALSE muss, anstatt TRUE zu sein, weitergeben müssen:

CHECK (LeaseExpirationDate > LeastStartDate) 

Wenn LeaseExpirationDateNULL ist, dann ist die ganze Bedingung auswertet als UNKNOWN. Das ist nicht FALSE und so wird die Einschränkung nicht verletzt.

+0

OHH ok, vielen Dank – daniel

+0

Für die folgende benötigen wir boolesche Logik rechts ?: – daniel

+0

Wenn LastRentPaidDate in Tenants das aktuelle Datum ist, dann muss RentOverdue FALSE sein. – daniel