当我用Sqitch迁移创建一个表时,我想初始化它的起始 SERIAL PRIMARY KEY 1 ALTER SEQUENCE 命令似乎没有任何效果。
SERIAL PRIMARY KEY
1
ALTER SEQUENCE
BEGIN; CREATE TABLE "user" ( "id" SERIAL PRIMARY KEY, ... more columns ... ); ALTER SEQUENCE "user_id_seq" RESTART WITH 12345; COMMIT;
当上述迁移成功运行时 id 将第一行的列插入到 user 具有值的表 1
id
user
但是,如果我执行 ALTER SEQUENCE "user_id_seq" RESTART WITH 12345; 语句(在迁移运行之后),我插入的下一行 身份证件 列具有值 12345
ALTER SEQUENCE "user_id_seq" RESTART WITH 12345;
身份证件
12345
ALTER SEQUENCE... 但这似乎并没有任何积极的效果。
ALTER SEQUENCE...
我怎样才能成功地执行 Squitch迁移中的语句?
你试过这个吗:
SELECT setval("user_id_seq", 12345, false);
https://www.postgresql.org/docs/current/functions-sequence.html
更新时间:
这个怎么样?刚测试过,效果很好
BEGIN; CREATE SEQUENCE user_id_seq START 12345; CREATE TABLE "user" ( "id" integer NOT NULL DEFAULT nextval('user_id_seq'), --- rest fields ); ALTER SEQUENCE user_id_seq OWNED BY user.id; COMMIT;