可以创建表,例如:

CREATE TABLE IF NOT EXISTS router (
    id       BIGSERIAL     PRIMARY KEY
,   name_1   BOOLEAN       NOT NULL     DEFAULT FALSE
,   name_2   BOOLEAN       NOT NULL     DEFAULT FALSE
,   name_3   BOOLEAN       NOT NULL     DEFAULT FALSE
,   name_4   BOOLEAN       NOT NULL     DEFAULT FALSE
,   name_5   BOOLEAN       NOT NULL     DEFAULT FALSE
);

对于这个表,我会使用类似lock的方法来防止在bettwen name 1-name 5中放入超过1个真值。例如,如果真值存在,那么就不可能把某些东西放进去。如果在NAME3中存在,则必须放置NAMEY1,2,4和5。

最佳答案

可以添加检查约束:

check (name_1 and not name_2 and not ...
     or name_2 and not name_1 and not ...
     or ...)

(表达布尔表达式的方法可能更短,但这就是它的要点。)

关于postgresql - postgresql表将锁定设置为某些值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20530862/

10-16 22:42