Martin Lembcke 10 Geschrieben 5. Mai 2004 Melden Teilen Geschrieben 5. Mai 2004 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 Zitieren Link zu diesem Kommentar
aba 10 Geschrieben 5. Mai 2004 Melden Teilen Geschrieben 5. Mai 2004 Ä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? Zitieren Link zu diesem Kommentar
Martin Lembcke 10 Geschrieben 5. Mai 2004 Autor Melden Teilen Geschrieben 5. Mai 2004 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 Zitieren Link zu diesem Kommentar
aba 10 Geschrieben 5. Mai 2004 Melden Teilen Geschrieben 5. Mai 2004 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) Zitieren Link zu diesem Kommentar
Martin Lembcke 10 Geschrieben 5. Mai 2004 Autor Melden Teilen Geschrieben 5. Mai 2004 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.