none
T-SQL Trigger nach Insert einer bestimmten Message RRS feed

  • Frage

  • Hi,

    ist es möglich auf MS SQL Server 2008 nach dem Inserten einer bestimmten Message in eine Tabelle einen Trigger zu feuern oder ist es nur bei  allgemeinen Inserts möglich à la "create trigger after insert..."? Wenn ja, wie sieht die Syntax dazu aus?

    Habe eine Tracing-Tabelle und je nachdem ob die Message "Exception XY" inserted wird, soll ein Trigger gefeuert werden (automatisches Email senden), bei allen anderen Messages nicht.

     

    Für Tipps wäre ich dankbar. Habe diesbezüglich im Net leider nichts gefunden.

    LG

    Donnerstag, 28. Juli 2011 12:17

Antworten

  • Hi,

    ein Trigger wird entweder immer oder nie gezündet. Was Du natürlich machen kannst, ist, innerhalb des Triggers in der "inserted" Tabelle abzufragen, ob der gewünschte Wert in der entsprechenden Spalte vorhanden ist und falls ja, deine Aktion auszulösen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert SaniSmalls Donnerstag, 28. Juli 2011 12:43
    Donnerstag, 28. Juli 2011 12:30
    Moderator

Alle Antworten

  • Hi,

    ein Trigger wird entweder immer oder nie gezündet. Was Du natürlich machen kannst, ist, innerhalb des Triggers in der "inserted" Tabelle abzufragen, ob der gewünschte Wert in der entsprechenden Spalte vorhanden ist und falls ja, deine Aktion auszulösen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert SaniSmalls Donnerstag, 28. Juli 2011 12:43
    Donnerstag, 28. Juli 2011 12:30
    Moderator
  • Hi,

    danke für die schnelle Antwort. Hätte es mir schon denken können.

    Nach jedem Insert einen Trigger zu feuern, wäre in meinem Fall, performance-technisch eine Katastrophe, da im Sekunden-Takt Inserts auf die Tracing-Tabelle durchgeführt werden.

     

    EDIT: Da würde ich schon eher ein SQL-Job einrichten, der alle x Minuten die Tracing-Tabelle nach der Message "Exception XY" durchsucht und nach Notwendigkeit eine Mail verschickt.

    LG


    Donnerstag, 28. Juli 2011 12:40
  • Hi,

    selbst wenn es die Möglichkeit geben würde, einen Trigger nur zu zünden, wenn ein bestimmtes Kriterium erfüllt ist, würde das performancetechnisch keinen Unterschied zu der Lösung "Im Trigger auf den Wert prüfen" machen, da auch die andere Variante schauen muss, ob der gesuchte Wert vorhanden ist.

    Die Lösung über den SQL Job ist da sicher performanceschonender :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 28. Juli 2011 13:04
    Moderator