我已经用 Postgres 玩了一个星期左右,我正在看看是否可以使用表达式设置序列的最小值/最大值。具体目标是为服务器之间的不相交范围自动创建脚本,以避免多主设置中的密钥冲突。
例如,使用 psql:
CREATE SEQUENCE key_seq MINVALUE (:servernum * :stride)
MAXVALUE ((:servernum + 1) * :stride - 1);
Run Code Online (Sandbox Code Playgroud)
这给了我一个语法错误。变量是逐字内插的,不进行计算。
另一种方法是根据表达式的输出设置变量:
\set minvalue (:servernum * :stride)
Run Code Online (Sandbox Code Playgroud)
但该\set
语句不计算表达式。