Pergunta sobre postgresql – Sequência de queda e cascata

15

Eu gostaria de soltar a seqüência usada na tabela e a tabela em si em uma declaração usando CASCADE, mas estou recebendo aviso e tabela não é descartada. Por exemplo:

<code>CREATE SEQUENCE seq1;
CREATE TABLE t1 (f1 INT NOT NULL DEFAULT nextval('seq1'));
</code>

E então quando eu faço:

<code>DROP SEQUENCE seq1 CASCADE;
</code>

Eu recebo a seguinte mensagem e a tabela não é removida:

<code>NOTICE:  drop cascades to default for table t1 column f1
</code>

Eu definitivamente estou fazendo algo errado, mas estes são meus primeiros passos no PostgreSQL.

Sua resposta

4   a resposta
3

Eu não sei porque você está criando uma sequência manualmente - talvez você tenha justificativa, ou talvez seja devido a hábitos trabalhando com outro DBMS.

Mas se você não tem uma necessidade especial para isso, use oSERIAL pseudo-tipo e quando você soltar a tabela a seqüência (s) atrás doSERIAL coluna (s) será descartada também.

Inicialmente pensei que não posso inicializar a sequência que usa a macro SERIAL, mas agora percebi que ela cria uma sequência regular que eu poderia inicializar normalmente. Mudando para SERIAL, obrigado. Chris Koston
36

pendente de uma sequência associada e éNunca caiu por um

<code>DROP SEQUENCE ... CASCADE;
</code>

Somente um valor DEFAULT desenhado da sequência "depende" da sequência e é definido como NULL se a sequência for excluída comCASCADE.

É o contrário: se a sequência é de propriedade de uma coluna de tabela, ela é descartada

<code>DROP TABLE f1 CASCADE;
</code>

Para que uma sequência pertença a uma coluna de tabela, você pode usar oserial tipo como Milen já sugeriu. Ou você podeALTER uma sequência existente:

<code>ALTER SEQUENCE seq1 OWNED BY t1.f1;
</code>
0

drop table em cascata table_name; Você também pode usar isso ... e eu também recomendo que você use uma serial com chave primária para que você possa identificar uma coluna exclusivamente ..

3

Você pediu para soltar oseqüência e cascata essa ação. Enquanto opadrão não pode existir sem a sequência e, portanto, é descartada, a tabela e a colunaposso existem sem a seqüência, então eles permanecem.

Com a maneira que você especificou isso, soltar a tabela não irá descartar a seqüência, embora você possa fazer a sequência depender da coluna com a qual ela é usada e, portanto, teristo cair automaticamente se você soltar omesa. Você pode fazer isso alterando o proprietário da sequência ou usar o SERIAL. Declarar uma coluna para ser do tipo SERIAL cria automaticamente uma sequência, faz com que ela gere um padrão para a coluna e torna essa coluna o proprietário da sequência.

Perguntas relacionadas