Estou correto em entender que CREATE OR REPLACE basicamente significa "se o objeto existe, elimine-o e crie-o de qualquer maneira?"
Se sim, o que estou fazendo de errado? Isso funciona:
CREATE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
E isso não acontece (ORA-00922: opção ausente ou inválida):
CREATE OR REPLACE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
Estou fazendo algo estúpido? Não consigo encontrar muita documentação sobre essa sintaxe.
CREATE OR REPLACE
também funciona para sinônimos e gatilhosO seguinte script deve fazer o truque no Oracle:
fonte
Não funciona com tabelas, apenas funções etc.
Aqui está um site com alguns exemplos .
fonte
Um procedimento útil para bancos de dados Oracle sem usar exceções (sob circunstâncias, você deve substituir user_tables por dba_tables e / ou restringir o espaço de tabela na consulta):
fonte
fonte
Se você estiver fazendo em código, primeiro verifique a tabela no banco de dados usando a consulta SELECT nome_tabela FROM tabelas_usuario WHERE nome_tabela = 'XYZ'
se o registro for encontrado, truncar a tabela, caso contrário, criar a tabela
Trabalhe como Criar ou Substituir.
fonte
Você pode usar o CORT ( www.softcraftltd.co.uk/cort ). Esta ferramenta permite CRIAR OU REPLACE tabela no Oracle. Parece:
Ele preserva os dados.
fonte
Estou usando isso e funcionou muito bem: - funciona mais como um DROP IF EXISTS, mas dá conta do recado
Espero que isso ajude Também referência: PLS-00103 Erro no PL / SQL Developer
fonte
'Criar ou substituir tabela' não é possível. Como outros afirmaram, você pode escrever um procedimento e / ou usar begin execute imediatamente (...). Como não vejo uma resposta sobre como (re) criar a tabela, coloquei um script como resposta.
PS: em linha com o que jeffrey-kemp mencionou: este script abaixo NÃO salvará dados que já estão presentes na tabela que você vai eliminar. Devido ao risco de perda de dados, em nossa empresa só é permitida a alteração de tabelas existentes no ambiente de produção, não sendo permitida a eliminação de tabelas. Ao usar o extrato da mesa suspensa, mais cedo ou mais tarde você colocará a polícia da empresa em pé na sua mesa.
fonte
Eu faria algo assim
fonte
Se for para MS SQL .. O código a seguir sempre será executado, não importa se a tabela já existe ou não.
fonte