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 の対応する行が自動的に削除されます。
DELETE FROM accounts WHERE acc_num = 2;