2017-11-15 3 views

Antwort

2

Sie benötigen einen Fremdschlüssel aus der untergeordneten Tabelle auf der übergeordneten Tabelle hinzuzufügen. Das Standardverhalten eines Fremdschlüssels verhindert das Löschen von Datensätzen aus der übergeordneten Tabelle, wenn untergeordnete Datensätze vorhanden sind.

Zum Beispiel

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) 
); 

Dies wird Ihnen auch mit parent_id Werte (außer null) von Hinzufügen von Datensätzen auf das Kind verhindern, die in parent nicht existieren. Sie können das Verhalten der Fremdschlüsselbedingung mithilfe der Klauseln on update und on delete weiter modifizieren. Siehe die Firebird Sprachreferenz auf constraints. Wenn Sie beispielsweise on delete cascade verwenden, werden Zeilen aus der untergeordneten Tabelle gelöscht, wenn der übergeordnete Datensatz gelöscht wird.

Ein Fremdschlüssel kann nur bis zu einem Primärschlüssel oder einen einzigartigen Schlüssel verweisen.

Der obige Code ist absichtlich kurz, Sie sollten die Verwendung von benannten Einschränkungen für Primär- und Fremdschlüsselbeschränkungen in Betracht ziehen, da dies die zukünftige Wartung vereinfacht, überprüfen Sie die language reference für Details.

Verwandte Themen