Använd select ... as ...
för att skapa en tabell aldrig kopieringsbegränsningar. Om du vill att den nya tabellen ska ärva begränsningar från de ursprungliga tabellerna måste du skapa de nya begränsningarna manuellt.
Som @Davek påpekar, not null
begränsningar kommer att kopieras från en enda tabell select ... as ...
. Jag antar att det beror på att de både är kolumnattribut och begränsningar. Men när kolumnen har mer än en källa är det rimligt att Oracle inte skulle försöka tillämpa den begränsningen.
Som svar på följdfrågan "skulle det vara möjligt att ge tableC
samma begränsningar antingen från tableA
eller tableB
, efter en CTA?":
Naturligtvis är det möjligt, men det finns inget enskilt kommando för att göra det. Du kan skriva en procedur som använde dynamisk SQL för att kopiera begränsningarna. Men såvida du inte vill automatisera detta beteende, kommer det i allmänhet att vara lättare att extrahera DDL med en IDE och ändra tabellnamnet.