空のデータベースがあり、2 つのテーブルを作成したいとします。それらの間には関係があります。たとえば、R の属性の 1 つ (b と呼びます) は外部キーです。定義は次のようにする必要があります (データベースは空です。まだステートメントを実行していません)。
create table R(
a type primary key,
b type references S(b)
);
create table S(
b type primary key
);
上記のステートメントでスクリプトを実行しようとすると、 S が存在しないため、エラーが発生します (行によると: b type references S(b)) 。これは正常で自然です。外部キーに対応する、テーブルの既存のチェックを無効にすることはできますか?
ステートメントの順序を変更できることを知っています。または、制約なしでテーブルを作成し、後で追加します。
なぜ私は尋ねている。多くのテーブルがあり、それらの間に多くの関係があると仮定しましょう。「バックアップ スクリプト」のようなものを準備する必要がある場合、テーブルを手動で注文すると多くの時間がかかります。
以下のように制約を無効にできることを知っています。
alter table table_name disable constraint_name;
しかし、それはたとえば挿入ステートメントで機能します。ステートメントを作成するための適切な解決策はありますか?