[英]Postgres SQL Exclusive OR (XOR) CHECK CONSTRAINT, is it possible?
[英]Making a CHECK CONSTRAINT with OR in postgres SQL
我想知道是否有可能先在CHECK CONSTRAINT中評估某些條件,然后對另一個表達式進行OR。
我的情況:
4張桌子:\\
我想做一個檢查約束,基本上遵循以下邏輯:
if main.type = 0:
main.a != NULL
main.b = NULL
main.c = NULL
elif main.type = 2:
main.a = NULL
main.b = NULL
main.c != NULL
如果類型= 1,我不在乎填寫的內容。
我試着像這樣檢查檢查約束:
CHECK((main.type = 0 AND main.a != NULL AND main.b = NULL AND main.c = NULL) OR
(main.type = 2 AND main.a = NULL AND main.b = NULL AND main.c != NULL))
問題在於,在應用此約束后,內部括號會被刪除/忽略,這意味着它變得很無用,並且無法正常工作。
這是否可以通過“檢查約束”解決,還是應該為此使用觸發器?
!= NULL
! 那是行不通的。 這似乎是您想要的邏輯:
CHECK ( (type = 0 and a is not null and b is null and c is null) or
(type = 2 and a is null and b is null and c is not null) or
(type = 1)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.