IBM® Informix® 12.10

カスケード削除の例

参照整合性規則が適用されている 2 つの表 (親表 accounts と子表 sub_accounts) があると仮定します。次の CREATE TABLE 文は、参照制約を定義しています。
CREATE TABLE accounts (
  acc_num SERIAL primary key,
  acc_type INT,
  acc_descr CHAR(20));

CREATE TABLE sub_accounts (
  sub_acc INTEGER primary key,
  ref_num INTEGER REFERENCES accounts (acc_num)
    ON DELETE CASCADE,
  sub_descr CHAR(20));

accounts 表の主キー acc_num 列は、シリアル (SERIAL) 型を使用します。また、sub_accounts 表の外部キー ref_num 列は、整数 (INTEGER) 型を使用します。主キーのシリアル (SERIAL) 型と外部キーの整数 (INTEGER) 型の組合せは許されています。この条件においてのみ、データ型を混用したり、一致させたりできます。シリアル (SERIAL) 型は整数 (INTEGER) 型であり、データベースは自動的に列の値を生成します。このデータ型以外の主キーと外部キーの組合せは、データ型がすべて明確に一致していなければなりません。例えば、文字 (CHAR) 型として定義された主キーは、文字 (CHAR) 型として定義された外部キーに一致しなければなりません。

sub_accounts、列 ref_num の外部キーの定義にはオプション ON DELETE CASCADE が含まれます。このオプションを指定すると、親表 accounts のどの行を削除しても、子表 sub_accounts の対応する行が自動的に削除されます。

表 accounts から行を削除し、表 sub_accounts をカスケード削除するには、ログ機能をオンにする必要があります。次の例が示しているように、ログ機能をオンにした後両方の表からアカウント番号 2 を削除することができます。
DELETE FROM accounts WHERE acc_num = 2;


フィードバックの送信 | 例の共有 | トラブルシューティング

PDF を見つけるには、Publications for the IBM Informix 12.10 family of products を参照してください。
リリース ノート、ドキュメント ノート、マシン ノートについては、リリース ノート・ページを参照してください。
タイムスタンプ リリース日: 2013 年 3 月