我有一张 table :
CREATE TABLE ProjectCreationTasks
(
Id text NOT NULL PRIMARY KEY,
ProjectName text,
ProjectCode text,
DenialReason text
);
管理员可以批准或拒绝项目创建请求。为了批准,管理员设置了 ProjectName 和 ProjectCode;要拒绝,管理员设置 DenialReason。
如何添加约束,以便:
Name
, Code
, Reason
可以同时为空 Name
和 Code
都有值,则 Reason
必须为 null Reason
有值,则 Name
和 Code
都必须为 null 先感谢您。
最佳答案
您可以使用 CHECK
constaint 来实现这种逻辑:
CREATE TABLE ProjectCreationTasks (
Id text NOT NULL PRIMARY KEY,
ProjectName text,
ProjectCode text,
DenialReason text,
CONSTRAINT my_constraint CHECK
((ProjectName IS NULL AND ProjectCode IS NULL AND DenialReason IS NULL)
OR(ProjectName IS NOT NULL AND ProjectCode IS NOT NULL AND DenialReason IS NULL)
OR(DenialReason IS NOT NULL AND ProjectName IS NULL AND ProjectCode IS NULL))
);
DBFiddle Demo
关于sql - 根据其他列中的值添加 PostgreSQL 列约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52120290/