怎样将一个表的integer类型字段改成serial类型?

linzhifeng 2011-01-18 11:35:24
表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;
最后一句出错了,是什么原因?
...全文
244 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小小小周 2011-01-19
  • 打赏
  • 举报
回复
(select max(id)+1 from laodonghetong);
或则你重新START 最大的+1
可以不
iihero_ 2011-01-19
  • 打赏
  • 举报
回复
最后一步采用楼上的方法即可。
trainee 2011-01-19
  • 打赏
  • 举报
回复
可能alter sequence laodonghetong_id_seq restart with 后面不能跟SQL语句
用函数 setval()吧
iihero_ 2011-01-19
  • 打赏
  • 举报
回复
不能这样用,
必须这样的:
select setval('laodonghetong_id_seq', max(id)) from laodonghetong;
setval
--------
3
(1 row)
linzhifeng 2011-01-19
  • 打赏
  • 举报
回复
也不行,只有with后面是数字时可以
但我要改好几个表,希望能自动把sequence改为ID的最大值

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧