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)
(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