Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi View mit Instead Of Trigger nutzen (https://www.delphipraxis.net/210515-view-mit-instead-trigger-nutzen.html)

seb83 5. Mai 2022 15:33

Datenbank: SQL Server • Version: >2005 • Zugriff über: AdoQuery

View mit Instead Of Trigger nutzen
 
Hi,

zurzeit ist ein DbGrid über eine AdoQuery angebunden, nun muss ich was dort angezeigt wird erweitern.
Zurzeit hängt dahinter eine einfache View, jetzt musste ich eine benutzen die ein UNION ALL enthält, nun geht ja das INSERT nicht mehr, also habe ich ein INSTEAD OF INSERT Trigger gebaut.
Per normalen SQL kann ich problemlos einfügen in die View, aber in Delphi geht nichts mehr...
Bekomme erst den Fehler das Spalten nicht NULL enthalten dürfen und dann "... kann nicht aktualisiert werden da die Definition einen UNION Operator enthält".
Wie macht Delphi das und umgeht den INSTEAD OF Trigger? Gibt es eine Lösung?

View wurde mit VIEW_METADATA erstellt

Stevie 5. Mai 2022 16:07

AW: View mit Instead Of Trigger nutzen
 
In der Regel benötigt man in einem solchen Fall drei instead of trigger: delete, insert und update.

jobo 5. Mai 2022 19:07

AW: View mit Instead Of Trigger nutzen
 
Erstmal ne doofe Frage: Muss es wirklich ein Union sein? Nach meiner Erfahrung gibt es hier oft Missverständnisse, die ein UNION Statement als einzige Option erscheinen lassen.

Wenn sich UNION nicht vermeiden lässt, würde ich trotzdem versuchen, keinen Instead Of Trigger zu nutzen.
Das kann erfolgen durch
- Nutzung einer SP für Insert/ Update / Delete (Code wahrscheinlich relativ ähnlich zu den Triggern)
- Nutzung eines anonymen Blocks (fast wie oben, nur das es eine reine Clientveranstaltung ist)
- Entzerrung der ganzen Form
Der letzte Fall kann beliebig bastelig sein/ werden, Richtung Trennung von Darstellung und Editierung bzw. der Persisistierung der editierten Daten, also Fallunterscheidung bereits im Client, fallweise gefolgt von 2 separten Update Statements.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz