2

空のデータベースがあり、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;

しかし、それはたとえば挿入ステートメントで機能します。ステートメントを作成するための適切な解決策はありますか?

4

0 に答える 0