如果我有模式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;
这些都不起作用。
答案 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
,顺便说一下 - 否则你不需要从表格中选择。