sql >> データベース >  >> RDS >> Oracle

selectユニオンを使用したテーブルの作成には制約がありません

    select ... as ...を使用する テーブルを作成する決して 制約をコピーします。新しいテーブルで元のテーブルから制約を継承する場合は、新しい制約を手動で作成する必要があります。

    @Davekが指摘しているように、not null 制約は単一のテーブルからコピーされますselect ... as ... 。これは、列の属性と制約の両方であるためだと思います。ただし、列に複数のソースがある場合、Oracleがその制約を適用しようとしないのは合理的です。

    フォローアップの質問に答えて、「tableCを与えることは可能でしょうか? tableAからの同じ制約 またはtableB 、CTAの後?」:

    もちろんそれは可能ですが、それを行うための単一のコマンドはありません。動的SQLを使用して制約をコピーするプロシージャーを作成できます。ただし、この動作を自動化する場合を除いて、通常、IDEを使用してDDLを抽出し、テーブル名を変更する方が簡単です。




    1. 複雑な製品/注文データをMySQLに保存する方法は?

    2. JOINとGROUPBYのパフォーマンスを向上させるためのインデックス

    3. session_startは致命的なエラーをスローします

    4. データベースから特定の行を削除し、対応するボタンをクリックしてhtmlテーブルを削除します