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为空且…