postgresql表设置锁定某些值

时间:2013-12-11 22:03:15

标签: postgresql

可以创建表格,例如:

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这样的东西,以防止在name_1 - name_5之间放置超过1的真值。例如,如果name_1中存在true值,则无法在name_2中添加某些内容 - name_5。如果存在于name_3中,则无法放置name_1,2,4和5

1 个答案:

答案 0 :(得分:2)

您可以添加检查约束:

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

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