Estou tentando descobrir como uma inserção de tabela se comporta quando a sequência correspondente transborda no Postgres. Para testar isso, criei uma tabela
CREATE TABLE t1(
id SERIAL
);
Isso criou uma sequência correspondente
select pg_get_serial_sequence('t1', 'id');
pg_get_serial_sequence
------------------------
public.t1_id_seq
(1 row)
Editei a sequência manualmente e defini um valor máximo
alter sequence t1_id_seq MAXVALUE 5;
Neste ponto, eu esperava não poder inserir na tabela quando a sequência atingir seu valor máximo. Mas vi que ainda posso inserir na tabela.
insert into t1 select * from generate_series(10,100);
INSERT 0 91
E a sequência nextval é definida como 1
select * from nextval('t1_id_seq');
nextval
---------
1
(1 row)
A inserção da tabela não deve falhar quando a sequência estourar? Por que a sequência não está transbordando neste caso?