Announcement

Collapse
No announcement yet.

Trigger anlegen

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

  • Trigger anlegen

    Guten Morgen!

    Bisher hatte ich noch nie mit Triggern gearbeitet, daher bereiten mit gerade die gundelegensten Sachen schon Schwierigkeiten.

    Wie/wo lege ich einen Trigger an?
    Ich habe es versucht, indem ich auf die zu überwachende DB eine Procedure gemacht habe?! Aber das ist wohl nicht richtig?

    Zum Trigger selber:
    Ich möchte in db1 bei einem INSERT in Tabelle test einen Trigger anlegen, der die neue Zeile dann in db2 Tabelle testchange schreibt.
    Hab das so versucht:

    Code:
    CREATE TRIGGER tt
    BEFORE INSERT ON db1.test
    FOR EACH ROW
    INSERT INTO db2.testchange
    (wert, bezeichnung)
    VALUES
    (old.ident, old.ben)
    ;
    Weiß aber nicht ob das so richtig ist, da ich ja nicht weiß, wo ich das ganze speichern muss.

    Hoffe, es kann mir jemand helfen.
    Danke!

  • #2
    Hallo,
    Originally posted by Bonaqua View Post
    ...Weiß aber nicht ob das so richtig ist, da ich ja nicht weiß, wo ich das ganze speichern muss. ...
    Das mußt du auch nicht wissen - überlass es einfach dem MySQL-Server wo er das speichert.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Das mußt du auch nicht wissen - überlass es einfach dem MySQL-Server wo er das speichert.
      Ok, hast natürlich Recht!

      Aber WO soll ich das schreiben? Wenn ich eine Procedure oder Function anlege? Nur im Query Browser?

      Comment


      • #4
        Originally posted by Bonaqua View Post
        ...Aber WO soll ich das schreiben? Wenn ich eine Procedure oder Function anlege? ...
        Na irgendwo da wo du normalerweise deine SQL-Stements eingibst. Die MySQL-Kommandozeile, PHPMyAdmin,...
        Wo gibst du denn deine CREATE TABLE Statements ein? Dort kannst du auch ein CREATE TRIGGER absetzen.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          CREATE TABLE mache ich normal über die "graphische Oberfläche" im Query Browser.
          Soll ich dort auch den Trigger schreiben? Steh grad leider sehr fest auf dem Schlauch ...

          Comment


          • #6
            Schon mal einfach probiert?
            Christian

            Comment


            • #7
              Ja, habe ich.
              Dabei erhalte ich folgende Fehlermeldung:
              This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
              Das deutet wohl eher auf einen Fehler in meinem Trigger-Statement hin, oder?

              Noch eine weitere Frage:
              Der Trigger soll ausgeführt werden, wenn in Datenbank db1 ein Neueintrag bei einer bestimmten Tabelle gemacht wird.
              Dieser neue Datensatz soll dann in der Datenbank db2 in eine Tabelle geschrieben werden.

              Geht das überhaupt so einfach, einen Trigger über verschiedene DBs laufen zu lassen?

              Comment


              • #8
                Ok, der Teil mit dem Trigger anlegen war nun erfolgreich!

                Nun hab ich noch das Problem, dass es nicht innerhalb der selben DB ausgeführt werden soll. Sondern eben in eine andere DB.

                Hier mal mein Code, getestet innerhalb einer DB.
                Code:
                CREATE TRIGGER xyz AFTER INSERT ON t1
                FOR EACH ROW INSERT INTO artikel (a_ident) VALUES (NEW.ident);
                Nun ist aber t1 in db1
                Und artikel in db2

                Kann mir da vielleicht noch jemand helfen, wie ich in der Syntax Tabellen verschiedener Datenbanken anspreche?
                DANKE!

                Comment


                • #9
                  Das hat auch funktioniert:
                  datenbankname.tabellenname

                  Comment

                  Working...
                  X