Ich muss einen Trigger in einer SQL-Tabelle erstellen, um eine E-Mail zu senden, wenn der eingefügte Datensatz bestimmte Bedingungen erfüllt. Das heißt, ich erstelle den Trigger in Table1, um eine E-Mail an X zu senden, wenn im eingefügten Datensatz das Feld IdCircuito = 53, IdTipoDoc = 45 und Gestor = 'Gest1' ist. Außerdem möchte ich im Text der E-Mail-Nachricht den Wert eines bestimmten Felds des eingefügten Datensatzes anzeigen. Ich habe etwas getan, aber Trigger immer unabhängig von der eingefügten Datensatz ausführen:SQL-Trigger zum Senden einer E-Mail
CREATE TRIGGER dbo.SendEmail
ON dbo.TitulosDoc
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM TitulosDoc WHERE IdCircuito = 53 AND IdTipoDoc = 45 AND Gestor = 'Gest1')
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@recipients = '[email protected]',
@subject = 'New requeriment',
@body = 'It's a new requeriment: ';
END
END
GO
In Körper ist, wo ich einen wörtlichen Text mit dem Wert des Feldes des eingefügten Datensatz angezeigt werden soll: @body = ‚Es ist ein neue Anfrage: '+ TitulosDoc.NombreDocumento;
Kann mir jemand helfen? Danke
Anstatt die E-Mail direkt von Ihrem Trigger Senden Sie sollten stattdessen eine Staging-Tabelle von Daten füllen, die per E-Mail gesendet werden muss. Erstellen Sie dann einen Prozess, der die Staging-Tabelle alle paar Minuten abfragt und die E-Mail sendet. Der Grund dafür ist, dass Sie mehr als eine Zeile gleichzeitig einfügen können, und Sie müssen diese Zeilen loopen. Anstatt Schleifen und E-Mails in den Trigger zu setzen, verschieben wir diese in eine Zwischenspeichertabelle, um die Leistung des Systems aufrechtzuerhalten. –