(Co-Admin)
Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
Delphi 2010 Professional
|
Re: Löschen von 1 zu n und 1 zu n
30. Okt 2003, 16:48
Hallo Tau,
da kommt es jetzt doch auf die Datenbank an. Manche Datenbanken erlauben die "Löschweitergabe" CASCADE als CONSTRAINT im Rahmen der referenziellen Integrität festzulegen. D.h. diese Datenbanken löschen alle über einen Fremdschlüssel verbundenen Daten, wenn der Masterdatensatz gelöscht wird.
Wenn das die Datenbank nicht kann, dann machst du es am besten in dem BeforeDelete Ereignis des zu löschenden Mastersatzes. Idealerweise unter Transaktionskontrolle, damit bei einem Fehler alles mit ROLLBACK wieder rückgaängig gemacht werden kann.
Beim DeforeDelete Ereignis erstellt du eine weitere Löschquery für die Detailtabelle und stellst über einen Parameter sicher, dass nur die Daten gelöscht werden, die zu dem Masterdatensatz gehören. Bei einem Fehler bricht du die Delete Operation dann ab.
Albert Live long and prosper
MrSpock
|