title image


Smiley "Cascade Update Related Fields" und schon klappts mitd´m Nachbarn ;-)
Hallo ins Rund,



so, das muss ich nun doch noch loswerden...



Mein Problem war ja:

mit einer Update-Abfrage wurden einige Datensätze (DS) nicht aktualisiert. Neue DS wurden übrigens schon immer brav hinzugefügt.

Es kam stattdessen die Fehlermeldung "key violation".



Ursache:

Die Tabelle, in der die DS aktualisiert werden sollten, ist mit weiteren Tabellen über referentielle Integrität verknüpft.

Das Ändern von DS, die auch in dieser weiteren Tabelle vorhanden sind geht nicht, weil die Änderung des Schlüssels (über den die Verknüpfung besteht) wohl ein Löschen+Neuschreiben bedeutet. Löschen geht aber wegen der ref. Integrität nicht, die dann verletzt würde.

Darauf kam ich jedoch lange nicht, weil das Schlüsselfeld ja gar nicht wirklich verändert wird (der Inhalt bleibt der gleiche). Das Feld ist jedoch in der Update-Query drin, damit es für neue Datensätze mit übernommen wird. Bei bestehenden DS tut sich in diesem Feld einfach gar nichts (aus meiner Sicht. - Für Access offenbar schon: Überschreiben mit dem unveränderten Wert -> obiges Problem).



Lösung:

So simpel wie wirkungsvoll: bei der Definition der Tabellen-Beziehung das Häkchen "Cascade Update Related Fields" setzen und schon werden die Änderungen an die anderen Tabellen durchgereicht.



wer jetzt noch weiterlesen mag...

... bekommt hier die Query



UPDATE _input_neueKontakte LEFT JOIN kontakte

ON [_input_neueKontakte].eMail = kontakte.eMail

SET kontakte.eMail = [_input_neueKontakte].[eMail],

kontakte.Beschreibung = [_input_neueKontakte].[Beschreibung];





Und das Ding aktualisiert UND fügt neue Datensätze an. Ihr könnt mich schlagen, es ist so ;-) !!!



Sonnige Grüße,

Ruth


Die Kaiser-Hesse-Burg

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: