Pomocí select ... as ...
pro vytvoření tabulky nikdy kopíruje omezení. Pokud chcete, aby nová tabulka zdědila omezení z původních tabulek, musíte nová omezení vytvořit ručně.
Jak zdůrazňuje @Davek, not null
omezení se zkopírují z jedné tabulky select ... as ...
. Domnívám se, že je to proto, že jsou to atributy sloupců i omezení. Jakmile však sloupec obsahuje více než jeden zdroj, je rozumné, aby se Oracle nepokoušel použít toto omezení.
V odpovědi na doplňující otázku „by bylo možné dát tableC
stejná omezení buď z tableA
nebo tableB
, po CTA?":
Samozřejmě je to možné, ale neexistuje jediný příkaz, jak to udělat. Můžete napsat proceduru, která používá dynamické SQL ke kopírování omezení. Pokud však nechcete toto chování automatizovat, bude obecně jednodušší extrahovat DDL pomocí IDE a změnit název tabulky.