我试图弄清楚当相应的序列在 Postgres 中溢出时表插入的行为。为了测试这一点,我创建了一个表
CREATE TABLE t1(
id SERIAL
);
这创建了一个相应的序列
select pg_get_serial_sequence('t1', 'id');
pg_get_serial_sequence
------------------------
public.t1_id_seq
(1 row)
我手动编辑了序列并设置了一个最大值
alter sequence t1_id_seq MAXVALUE 5;
在这一点上,我预计一旦序列达到最大值,我将无法插入到表中。但我看到我仍然可以插入到表格中。
insert into t1 select * from generate_series(10,100);
INSERT 0 91
并且序列 nextval 设置为 1
select * from nextval('t1_id_seq');
nextval
---------
1
(1 row)
当序列溢出时,表插入不应该失败吗?为什么在这种情况下序列没有溢出?