Comando DROP TABLE: mudanças no comportamento de CASCADE para tabelas híbridas (pendente)¶
Atenção
Essa mudança de comportamento está no pacote 2025_03.
Para saber o status atual do pacote, consulte Histórico do pacote.
Quando esse pacote de mudança de comportamento está ativado, a configuração padrão do parâmetro CASCADE/RESTRICT é diferente para as tabelas híbridas. Essa alteração não se aplica às tabelas padrão.
- Antes da mudança:
Quando você descarta uma tabela híbrida sem especificar RESTRICT ou CASCADE e a tabela híbrida tem uma relação de chave primária/chave estrangeira ou chave exclusiva/chave estrangeira com outra tabela, o comando DROP TABLE é bem-sucedido.
O comportamento padrão é CASCADE.
CREATE OR REPLACE HYBRID TABLE ht1( col1 NUMBER(38,0) NOT NULL, col2 NUMBER(38,0) NOT NULL, CONSTRAINT pkey_ht1 PRIMARY KEY (col1, col2)); CREATE OR REPLACE HYBRID TABLE ht2( cola NUMBER(38,0) NOT NULL, colb NUMBER(38,0) NOT NULL, colc NUMBER(38,0) NOT NULL, CONSTRAINT pkey_ht2 PRIMARY KEY (cola), CONSTRAINT fkey_ht1 FOREIGN KEY (colb, colc) REFERENCES ht1(col1,col2)); DROP TABLE ht1;
O comando DROP TABLE é bem-sucedido sem nenhum erro.
- Após a mudança:
Quando você elimina uma tabela híbrida sem especificar a opção RESTRICT ou CASCADE e a tabela híbrida tem uma relação de chave primária/chave estrangeira ou chave exclusiva/chave estrangeira com outra tabela, o comando DROP TABLE falha com um erro.
O comportamento padrão é RESTRICT.
Por exemplo:
DROP TABLE ht1;
SQL compilation error: Cannot drop the table because of dependencies
O comando DROP TABLE falha nesse caso. Se necessário, você pode substituir o comportamento padrão especificando CASCADE no comando DROP TABLE.
DROP TABLE ht1 CASCADE;
Como alternativa, nesse caso, você poderia descartar a tabela dependente
ht2
primeiro e, em seguida, descartar a tabelaht1
.
Ref: 1741