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.