Hallo!

> Ich bin's schon wieder.
>
> Ich brauche nochmal Eure Hilfe - diesmal mit einem Trigger, der nicht
macht
> was er machen soll.
>
> Gibt es irgendeine Moeglichkeit sich den Inhalt von INSERTED oder
DELETED im
> Browser (oder sonstwo) ausgeben zu lassen, wenn der Trigger getriggert
wird?

In "deleted" stehen alle Spalten der getriggerten Tabelle VOR der
�nderung, also gel�schte Datens�tze und urspr�ngliche Werte bei
�nderungen. Und in "inserted" stehen eingef�gte Datens�tze und neue
Werte bei �nderungen.

Allerdings gibt es keine BLOBs (text-, ntext-, image-Felder) in den
Triggertabellen.

Um diese tempor�ren Tabellen im Browser sichtbar zu machen, muss man die
Datens�tze wieder in normale Tabellen einf�gen, die dann mit den
entsprechenden ADO-Funktionen angezeigt werden k�nnen. Alternativ dazu
gibt es M�glichkeiten in Transact-SQL, wie z. B. Speichern als Text-
oder HTML- oder XML-Datei oder Versenden per E-Mail.

Allerdings hat sich bei mir noch nie das Problem gestellt,
Triggerdateien anzuzeigen. M�glicherweise hilft es, wenn Du Deine
Trigger noch einmal analysierst:

Gibt es vielleicht 2 oder noch mehr Trigger f�r eine Tabelle mit
identischen Daten�nderungsereignissen?
Diese m�ssten unabh�ngig voneinander ausgef�hrt werden k�nnen, da die
Reihenfolge nicht festgelegt werden kann. Trigger 2 kann also vor
Trigger 1 ausgef�hrt werden und deshalb nicht zwingend auf die
Ergebnisse aus Trigger 1 zugreifen.

Gibt es direkte oder indirekte Rekursionen?
Trigger 1 �ndert die Tabelle 1 und l�st somit wieder ein
Trigger-Ereignis aus, oder ein Trigger 1 zu Tabelle 1 �ndert Tabelle 2
und deren Trigger 2 �ndert wieder Tabelle 1 und l�st so erneut Trigger 1
aus - auch hier kann "Datensalat" entstehen.

Um Konflikte mit Triggern zu vermeiden, kannst Du f�r die Trigger mit
"IF UPDATE (Column)" oder "IF (COLUMNS_UPDATED())" die Triggeraktionen
exakter differenzieren oder ganz brutal mit Systemprozeduren und
-einstellungen die Trigger-Ausf�hrung beeinflussen. Ab SQL-Server 2000
kannst Du auch INSTEAD-OF-Trigger statt nur AFTER-Trigger einsetzen.

Mein erster Fehler beim Umgang mit Triggern war die direkte Rekursion -
Trigger �ndert Tabelle und l�st erneut einen Trigger aus. Das lag daran,
dass ich den Trigger f�r Plausibilisierungen verwendet habe. Das ist
unproblematisch, wenn es Bedingungen gibt, die Triggeraktionen nicht
grunds�tzlich ausgef�hrt werden. Besser ist es jedoch, f�r
Plausibilisierungen eigene Stored Procedures zu schreiben.

Freundliche Gr��e
Joachim van de Bruck



| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an