![]() |
Datenbank: Firebird (Win32) • Version: 2.1 • Zugriff über: ZEOSLib
Referentielle Integrität | Firebird
Moin Moin liebe DPler ;)
Ich hätte mal eine Frage zwecks Referentieller Integrität ... Ich designe und erstelle meine Datenbanken / Tabellen mit IBExpert. Wenn ich nun einen Fremdschlüssel definieren möchte, hab ich die möglichkeit die Änderungs- und Löschregel einzustellen. Mir geläufige Änderungsregeln: ON UPDATA CASCADE ON UPDATE RESTRICT Mir geläufige Löschregeln: ON DELETE CASCADE ON DELETE RESTRICT ON DELETE SET NULL Ich benötige in beiden Fällen die "RESTRICT" Regel ... in IBExpert hab ich aber nur folgende Regeln zur Auswahl (Änderungs- + Löschregeln gleich) NO ACTION CASCADE SET NULL SET DEFAULT Alle drei sind für meine Aufgabe nicht zu gebrauchen, da ich nicht zulassen kann (aus Nachweis gründen) dass Datensätze abgeändert oder gelöscht werden, wenn Detaildatensätze noch vorhanden sind. Unterstützt Firebird kein RESTRICT? Ich hab schon gegoogled, finde aber keine konkrete antwort darauf :( Wenn ja, würde dass Bedeuten, dass ich zur Laufzeit überprüfen müsste ob Detaildatensätze existieren ... und dass wär ja mal nicht so schön :( Vielen Dank für eure Posts ;) Euer f4k3 // NO ACTION hab ich vergessen aufzulisten ;) |
Re: Referentielle Integrität | Firebird
Zitat:
|
Re: Referentielle Integrität | Firebird
Zitat:
Das Löschen oder Abändern der Daten der Master- oder Childtabelle ist nicht gestattet ... Wobei sich dass ändern / löschen nur auf die Primary und Foreign Keys bezieht ... also alle Schlüsselattribute. Ich möchte einfach verhindern, dass wenn ich einen Kunden lösche ... zu dem Daten in der Support-Datenbank existieren ... gelöcht werden kann. Wenn ich dann überall NULL oder -1 stehen hab, kann kein konkreter Nachweis geführt werden, und die Daten sind inkonsitent ... |
Re: Referentielle Integrität | Firebird
Dann sollte NO ACTION passend sein. Verhindert das Löschen von Datensätzen im Master, wenn dieser referenziert wird.
|
Re: Referentielle Integrität | Firebird
Zitat:
Nochmals Danke für die schnelle Hilfe f4k3 |
Re: Referentielle Integrität | Firebird
Das Verhalten von ON RESTRICT ist ja eigentlich das, was ein foreign key standardmäßig implementiert, von daher wäre eine explizite Angabe dieses Verhaltens redundant.
|
Re: Referentielle Integrität | Firebird
Code:
aus: With Firebird, there is no difference Some other SQL systems make a following distinction: NO ACTION means to allow the change if the new value in the child table is still valid after statement and all the triggers are completed (i.e. still found in the parent table of the relationship), while RESTRICT means that changing the value is not allowed at all (no change or delete is allowed if there are child records). This is implemented in such way that NO ACTION constraint rules are checked after all other operation, and RESTRICT is checked before any other operation. In current Firebird versions, both keywords are implemented as NO ACTION. ![]() Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz