Announcement

Collapse
No announcement yet.

Abfragen ob ein bestimmter Trigger vorhanden ist

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfragen ob ein bestimmter Trigger vorhanden ist

    Hallo,


    ich möchte per SQL abfragen, ob ein bestimmter Trigger "XYZ" existiert, um ihn ggf. zu löschen und neu anzulegen. Wie kann man so etwas herausbekommen?

    Für Prozeduren krieg ich das mit "sp_procedures_rowset @procedure_name= :name " heraus, ob es dann eine Ergebnismenge gibt. Vielleicht gibt es für Trigger ebenfalls so einen Weg?

    Das sollte auch mit MS SQL 2000 funktionieren!

    Mit try..except und dann einfach versuchen wegzulöschen ist ungünstig, da es sich um sehr viele Trigger handeln kann und ich in meiner Entwicklungsumgebung dann dauernd abgefangene Exceptions wegdrücken muss.

    Weiß da jemand eine Lösung?

    Grüße,

    Patrick

  • #2
    Hallo!

    Teste das Vorhandensein anhand der Tabelle sysobjects
    Select * from sysobjects where name = 'MyTriggerName' and xtype = 'TR'

    BYE BERND

    Comment


    • #3
      Hallo Bernd,

      klappt bei mir leider nicht, schon das Abfragen der sysobjects auf xtype = 'TR' gibt keinen einzigen Datensatz zurück :-(

      Habe aber definitiv in meiner Testdatenbank eine Tabelle mit zwei Triggern (UPDATE, DELETE) ...

      Gruß,
      Patrick

      Comment


      • #4
        Hallo Patrick,

        bei mir funktioniert
        Select * from sysobjects where xtype = 'TR'
        unter SQL 2K und 2K5 problemlos.

        Alternative kann man auch
        SELECT object_id('TriggerName')
        verwenden; wenn der Trigger nicht vorhanden ist, wird NULL geliefert.

        Gruß, Olaf
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Hallo!

          Ich melde mal gaaanz vorsichtig Zweifel an...

          Select * from sysobjects where name = 'MyTriggerName'
          was gibt er aus?

          Leg mal einen NEUEN Trigger an und dann
          Select * from sysobjects where xtype = 'TR'
          was gibt er aus?

          BYE BERND

          Comment


          • #6
            Hallo


            so jetzt komme ich der Sache näher. Habe eben auch den Tipp von Olaf noch ausprobiert und auch da wurde erst KEIN Ergebnis ausgegeben, als wenn die Trigger nicht vorhanden wären. Das Suchen in sysobjects nach dem Triggernamen hat auch keine Ergebnismenge zurückgegeben.

            Ich weiß nicht wie ich das gemacht habe, aber nun gehts ... kann es sein, dass es im SQL Management Studio Express ein Problem mit Aktualisierungen gibt? Oder muss man das Anlegen von Triggern noch irgendwie explizit Committen? Hab die Trigger immer per Rechtklick auf das Trigger-Symbol meiner Tabelle angelegt. Wenn ich es jetzt mache, geht auf einmal alles wunderbar *ratlos + verwirrt guck* vor allem: den einen Trigger hatte ich ja bereits gestern angelegt ... hmmm

            Naja,

            auf jeden Fall vielen Dank für die Hilfestellungen!

            Grüße,

            Patrick

            Comment

            Working...
            X