2017-11-15 18 views

答えて

2

子テーブルから親テーブルに外部キーを追加する必要があります。外部キーのデフォルトの動作により、子レコードがある場合、親テーブルからのレコードの削除が防止されます。例えば

create table parent (
    id integer generated by default as identity primary key 
); 

create table child (
    id integer generated by default as identity primary key, 
    parent_id integer references parent(id) 
); 

これもparentに存在しないparent_id値(null以外)との子にレコードを追加することを防止することができます。 on updateおよびon delete句を使用して、外部キー制約の動作をさらに変更できます。 Firebirdの言語リファレンス(constraints)を参照してください。たとえば、on delete cascadeを使用すると、親レコードが削除された場合、子テーブルから行が削除されます。

外部キーは、プライマリキーまたはユニークキーのみを指すことができます。

上記のコードは意図的に短く、主キー制約と外部キー制約の両方に名前付き制約を使用することを検討してください。これにより、将来のメンテナンスが簡単になります。詳細はlanguage referenceを参照してください。

関連する問題