Jump to content

Trigger auf Sicht anwenden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo

Ich habe noch mal eine Frage zu Trigger in Sichten,

denn ich habe mir mal die OnlineDoku angesehen und denke das ich jetzt

auch gefunden habe was ich wollte. Aber nun haut mein CODE wiedermal nicht

hin könnte mir jemand weiterhelfen.

Ich bekomme eine Fehlermeldung das er UPDATED nicht als Funktion erkennt

obwohl es in der Hilfe steht.

 

Mein Trigger soll mir immer dann eine Mail schicken wenn sich in der Sicht

'VIEW', in der Splate 'spalte' etwas verändert(updated).

 

CREATE TRIGGER [Mail] ON [dbo].[VIEW]

INSTEAD OF UPDATE

AS

IF UPDATED (spalte)

BEGIN

exec master..xp_sendmail @recipients = 'E-MAIL',

@query = 'select ''<HTML><HEAD><TITLE>Seitentitel</TITLE></HEAD>'' +

CHAR(13) +

''<BODY><H1>Mail-Trigger-Test</H1>'' + CHAR(13) +

''<P>Dies ist eine informative Mail. Bitte

ignorieren.</P></BODY></HTML>''',

@subject = 'SQL Server Nachricht',

@message = 'Dies ist eine Mail zum testen.',

@attach_results = 'True',

@no_header = 'True',

@width = 250,

@echo_error = 'False'

END

 

MFG Martin

Link zu diesem Kommentar

Ähm .... Trigger auf eine Sicht? ......

Das wäre für mich was ganz Neues, dass das funktioniert .....

 

IMHO funktionieren Trigger nur bei Transaktionen (insert, update und delete) und somit nur auf tables ....

 

Eine view ist, vereinfacht ausgedrückt, doch nichts weiter als ein "abgespeichertes select" .......

 

Für Transaktionen würde ich dann eher stored procedures verwenden ... aber auch da "hängt" der Trigger auf der table, die durch die procedure verändert wird ... denn in der table werden die Daten verändert ... und nicht in der procedure ....

 

Oder habe ich da vielleicht was falsch verstanden?

Link zu diesem Kommentar

Na ich habe schon eine andere Möglichkeit gefunden mein Problem zu lösen.

Mit welchen Funktionen kann ich Werte von einer Sicht in eine Tabelle übertragen? Weil wenn ich das hinbekomme denn mach ich mein xp_sendmail einfach auf der Tabelle wo ich die Werte hin übertrage.

Kannst du mir dabei Weiterhelfen wie ich die Werte übertragen kann?

 

MFG Martin

Link zu diesem Kommentar

Schau mal in der Online-Hilfe unter select into

So kannst Du die Ergebnismenge eines select in eine table schreiben.

 

Aber warum so komliziert?

Es gibt doch 2 einfachere Möglichkeiten:

1. Mit einer stored_procedure die du erstellst. Da einfach nach dem update der Daten die Variablen, die du definiert hast, per xp_sendmail verschicken (Beide Schritte innerhalb einer expliziten Transaktion, wegen der Datenkonsistenz).

2. Einfach einen Update Trigger auf die entsprechende table bauen, der bei Updates der Daten das xp_sendmail aufruft. (Genau dafür kann man doch Trigger hervorragend benutzen, bzw. genau dafür sind sie gedacht)

Link zu diesem Kommentar

Die Antwort darüber von mir ist nichtig denn man kann nicht zwei Trigger anwenden.

 

ZU ANDREAS

Ich würde ja die zweite Möglichkeit wählen aber denn bekomme ich ja jedes mal eine Mail wenn sich was Updated. Kann ich denn dort noch ein Kriterium einbauen?

z.B. führ den Befehl xp_sendmail nur aus wenn die Zahl die eingetragen wird unter 5 liegt.

 

Wenn du willst kann ich dir mal mein Code dazu zeigen, denn wie gesagt auf dem Wege habe ich es schon probiert aber ich bekomm das mit dem Kriterium nicht hin.

 

Grüß Martin

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...