select ... as ...
を使用する テーブルを作成する決して 制約をコピーします。新しいテーブルで元のテーブルから制約を継承する場合は、新しい制約を手動で作成する必要があります。
@Davekが指摘しているように、not null
制約は単一のテーブルからコピーされますselect ... as ...
。これは、列の属性と制約の両方であるためだと思います。ただし、列に複数のソースがある場合、Oracleがその制約を適用しようとしないのは合理的です。
フォローアップの質問に答えて、「tableC
を与えることは可能でしょうか? tableA
からの同じ制約 またはtableB
、CTAの後?」:
もちろんそれは可能ですが、それを行うための単一のコマンドはありません。動的SQLを使用して制約をコピーするプロシージャーを作成できます。ただし、この動作を自動化する場合を除いて、通常、IDEを使用してDDLを抽出し、テーブル名を変更する方が簡単です。