Opu*_*pux 3 postgresql sequence unique-constraint
我想向可能已经有数据的列中添加一个序列,所以我试图从已有的序列开始。假设已经有数据,我想这样做:
CREATE SEQUENCE my_sequence MINVALUE 1000000 START
(SELECT MAX(id_column) FROM my_table) OWNED BY my_table.id_column;
Run Code Online (Sandbox Code Playgroud)
但是它一直渴望(声明语法错误。就像起始值必须是冷硬数字-没什么象征意义。
当然,更好的解决方案是,如果序列具有足够的智能性来避免重复的值,因为id_column它具有唯一的约束,这就是我这样做的原因。但是据我所知,这是不可能的。
我还尝试跳过START,然后执行以下操作:
ALTER SEQUENCE my_sequence RESTART WITH (SELECT max(id_column)+1 FROM my_table);
Run Code Online (Sandbox Code Playgroud)
但是,同样,它似乎不像符号起始值。
我正在运行PostgreSQL 9.4,但是我们的一些客户使用的是像8.3一样原始的东西。
小智 7
您可以根据请求恢复序列:
select setval('my_sequence', (SELECT MAX(id_column) FROM my_table));
Run Code Online (Sandbox Code Playgroud)
适用于 Postgres 9.2。
您不能为起始值指定动态值。
但是您可以在创建序列后设置值:
CREATE SEQUENCE my_sequence MINVALUE 1000000 OWNED BY my_table.id_column;
select setval('my_sequence', (SELECT MAX(id_column) FROM my_table));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |