Como deletar uma sequence que foi gerada automaticamente por um SERIAL no Postgresql

Como deletar uma sequence que foi gerada automaticamente por um SERIAL no Postgresql:
(usar por conta e risco, aconselho testar em um banco simulado)

A partir da versão 8.2 já existe suporte à essa necessidade através de um simples ALTER TABLE. Nas anteriores, é necessário mexer na tabela pg_depend.

Versões 8.2 (e acima):

CREATE TABLE dtab (i SERIAL);

ALTER TABLE dtab ALTER COLUMN i DROP DEFAULT;

ALTER SEQUENCE dtab_i_seq OWNED BY NONE;

DROP SEQUENCE dtab_i_seq;


Versões abaixo da 8.2:

select * from pg_depend where refobjid = (select oid from pg_class
where relname = 'mytable') and objid = (select oid from pg_class where
relname = 'mytable_mytableid_seq');

delete from pg_depend where refobjid = (select oid from pg_class where
relname = 'mytable') and objid = (select oid from pg_class where
relname = 'mytable_mytableid_seq');

DROP SEQUENCE mytable_mytableid_seq;

(Sugestão de post: Alexsander da Rosa)

Comentários

Postagens mais visitadas deste blog

OpenOffice Calc: converter texto em números ou data

Converter em lote (batch) arquivos mp4 em mp3 usando o ffmpeg