设置自动增量值

时间:2014-03-18 11:33:59

标签: postgresql auto-increment

如果我有模式SCHEMA1与表tbl_one和tbl_two,SCHEMA2与表tbl_tree, 如何在PostgreSQL命令setval()中使用:

SELECT SETVAL('SCHEMA1.tbl_one_id_seq', 234) FROM SCHEMA1.tbl_one;
SELECT SETVAL('SCHEMA1.tbl_two_id_seq', 345) FROM SCHEMA1.tbl_two;
SELECT SETVAL('SCHEMA2.tbl_tree_id_seq', 456) FROM SCHEMA2.tbl_tree;

这些都不起作用。

3 个答案:

答案 0 :(得分:2)

尝试ALTER SEQUENCE SCHEMA1.tbl_one_id_seq RESTART WITH 234等等。

答案 1 :(得分:1)

您不需要FROM条款。只是:

SELECT SETVAL('SCHEMA1.tbl_one_id_seq', 234);

将来,当你说"它没有工作"您应具体了解完全的错误消息。

您的架构可能是案例保持不变的吗?如果是这样,你想要:

SELECT SETVAL('"SCHEMA1"."tbl_one_id_seq"', 234);

注意标识符上的引号以防止大小写折叠。

答案 2 :(得分:1)

请注意'schema1.tbl_one_id_seq'的小写拼写。除非您在创建对象时使用双引号,否则您需要在此处小写名称。

SELECT setval('schema1.tbl_one_id_seq', max(id))
FROM   SCHEMA1.tbl_one    -- case irrelevant while not double-quoted

获取最大id,顺便说一下 - 否则你不需要从表格中选择。