表laodonghetong,已经保存了一些数据,其ID字段为integer类型,现在要把ID字段改成serial类型,但怎么将新建的laodonghetong_id_seq的开始值改成laodonghetong表的ID字段的最大值加一?create sequence laodonghetong_id_seq;
alter table laodonghetong alter column id set default nextval('laodonghetong_id_seq');
alter sequence laodonghetong_id_seq owned by laodonghetong.id;
alter sequence laodonghetong_id_seq restart with (select max(id) from laodonghetong)+1;
最后一句出错了,是什么原因?
alter table laodonghetong alter column id set default nextval('laodonghetong_id_seq');
alter sequence laodonghetong_id_seq owned by laodonghetong.id;
alter sequence laodonghetong_id_seq restart with (select max(id) from laodonghetong)+1;
最后一句出错了,是什么原因?
或则你重新START 最大的+1
可以不
但我要改好几个表,希望能自动把sequence改为ID的最大值
必须这样的:
select setval('laodonghetong_id_seq', max(id)) from laodonghetong;
setval
--------
3
(1 row)
用函数 setval()吧