Ich kämpfe mit einer Abfrage, die auf mehreren Basistabellen beruht und über JOINs verknüpft sind.
Gebe ich nun Daten ein, dann kann die Abfrage nicht aktualisiert werden, da sich Änderungen auf mehrere Basistabellen auswirken würden.
Ich habe eine Tabelle GA_Auftraege, die einen Verweis auf die Tabelle Probanden enthält . AUßerdem gibt es noch die Tabelle Rechnungen, die wiederum einen Verweis auf die Tabelle GA_Auftraege enthält.
Ich spare mir mal den SQL-Text, da es sehr viele Felder enthält. Mir geht es zunächst mal um das Grundsätzliche
Ich schätze mal, die Abfrage kann nicht aktualisiert werden, da zum Zeittpunkt des Speicherns ...
- die ID des Datensatzes ausder Tabelle Probanden noch nicht bekannt ist
- die ID aus der Tabelle GA-AUftraege ebenfalls noch nicht bekannt ist, diese aber in der Tabelle Rechnungen gepsiechert werden müsste.
Dem hilft wohl der Instead of inserted Trigger ab. Aber wie genau?
Ich habe schonmal einen Entwurf gemacht, der aus der INSERTED Tabelle die Daten in die Tabelle Probanden speichert und dann den Wert der Identity-Spalte ermittelt. Aber wie bekomme ich den in die TAbelle GA_Auftraege? Die ist ja auch noch nicht gepeichert.
REATE TRIGGER trigger_Probanden ON dbo.qry_EingabeLSchein instead of insert AS BEGIN declare @tmp_Proband int; insert into dbo.Probanden(Proband_Name, Proband_Vorname, Proband_GebDatum, ) select inserted.Proband_Name, Proband_Vorname, Proband_GebDatum, from inserted set @tmp_Proband=IDENT_CURRENT('dbo.Probanden') update END
Bitte nicht hauen; ich weiß der Code ist unvollständig
Es gibt zwar jede Menge Beispiele im Netz, aber irgednwie beschäftigen sich alle mit kompplexeren Problemen