Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql表在某些值上设置了锁_Postgresql - Fatal编程技术网

postgresql表在某些值上设置了锁

postgresql表在某些值上设置了锁,postgresql,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 ,

可以创建表格,例如:

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的东西来防止输入超过1个真值bettwen name_1-name_5。例如,如果名称_1中存在真值,则无法在名称_2-名称_5中放置某些内容。如果名称3中存在无法放入名称1、2、4和5,则可以添加检查约束:

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

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

值得注意的是,bigserial确实雄心勃勃。除非你打算像facebook那样扩展,否则使用普通序列所获得的20亿通常已经足够了(更不用说更快了)。你可以将布尔值转换为int,然后检查
sum=1
hmm,但是同一个例子如何,但是使用varchar/char或text?同样的东西,例如:
name_1='foo'和name_2为空且…