Bla*_*nen 5 sql postgresql constraints
我想知道是否可以先评估 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
Run Code Online (Sandbox Code Playgroud)
如果 type = 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))
Run Code Online (Sandbox Code Playgroud)
问题是在应用此约束后,内括号会被删除/忽略,这意味着它几乎变得无意义并且不起作用。
这可以通过 CHECK CONSTRAINT 解决还是应该使用触发器来解决?
!= 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)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3745 次 |
| 最近记录: |