ELEMENT foreign (key+) ATTRIBUTE name string table string match string ondelete string onupdate string deferrable bool
Attribut | Typ | Pflicht | Default | Beschreibung |
---|---|---|---|---|
name | string | - | n/a | Ein eindeutiger Name welcher diesen Foreign-Key-Constraint identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein. |
table | string | yes | n/a | Name der Zieltabelle. |
match | string | - | simple | full | partial | simple |
ondelete | string | - | no-action | no-action | restrict | cascade | set-null | set-default |
onupdate | string | - | no-action | no-action | restrict | cascade | set-null | set-default |
deferrable | bool | - | no | Deferrable bedeutet, dass der DBS bis zum Ende der Transaktion warten sollte, bevor hinzugefügte oder aktualisierte Fremdschlüssel geprüft werden. Das wird in Situationen verwendet, in denen Daten innerhalb einer Transaktion sowohl in die Eltern- als auch in die Kindtabelle eingefügt werden, oder wenn kreisförmige Referenzen erzeugt werden (sofern das DBMS dies unterstützt). |
Fremdschlüssel dienen dazu, referentielle Integrität zwischen Tabellen zu gewährleisten. Dieses Feature wird nicht von allen DBMS unterstützt. Die Implementierung kann dieses Feature emulieren.
Jeder Fremdschlüssel besteht aus mindestens einer Quelle und einem Ziel. Beachten Sie, dass die Datentypen der Quellspalten eines Fremdschlüssels von den Datentypen der Zielspalten abhängen. Spalten, welche einen Fremdschlüssel enthalten, sollten als Typ "reference" definiert werden. In diesem Fall muss die Implementierung den korrekten Datentyp automatisch festlegen.
Die Attribute "ondelete" und "onupdate" definieren, wie das DBMS auf eine Änderung der Referenz reagieren soll.
Das Attribut "match" definiert, wann das DBMS die referentielle Integrität als erfüllt betrachten soll. Dies betrifft nur zusammengesetzte Fremdschlüssel, welche mehrere Spalten verwenden.
Das Attribut "deferrable" wird von einigen DBMS nicht unterstützt. Beachten Sie, dass diese Eigenschaft nicht simuliert werden kann. Verschiedene DBMS haben verschiedene Herangehensweisen, um dieses Problem zu umgehen. Z.Bsp. das vorübergehende Deaktivieren von Constraints. Nähere Informationen finden Sie in Ihrem Handbuch.
Das Attribut "match" wird durch einige DBMS nicht unterstützt. Dies betrifft nur zusammengesetzte Fremdschlüssel, welche mehrere Spalten verwenden. Dieses Feature wird selten verwendet und sollte für Datenbankanwendungen aus Gründen der Kompatibilität vermieden werden.
Einige Werte der Attribute "onupdate" und "ondelete" werden durch einige DBMS nicht unterstützt. Diese können simuliert werden durch die Verwendung von Trigger.
Thomas Meyer, www.yanaframework.net