Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

criar tabela com união de seleção não tem restrições


Usando select ... as ... criar uma tabela nunca restrições de cópias. Se desejar que a nova tabela herde restrições das tabelas originais, você deve criar as novas restrições manualmente.

Como @Davek aponta, not null as restrições serão copiadas de uma única tabela select ... as ... . Imagino que seja porque eles são atributos e restrições de coluna. No entanto, uma vez que a coluna tenha mais de uma origem, é razoável que o Oracle não tente aplicar essa restrição.

Em resposta à pergunta de acompanhamento "seria possível dar tableC as mesmas restrições de tableA ou tableB , após um CTA?":

Claro que é possível, mas não há um único comando para fazê-lo. Você poderia escrever um procedimento que usasse SQL dinâmico para copiar as restrições. No entanto, a menos que você queira automatizar esse comportamento, geralmente será mais fácil extrair o DDL usando um IDE e alterar o nome da tabela.