Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Trigger soll Wert verändern

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von rebelhig, 3 Juli 2015.

  1. rebelhig

    rebelhig Benutzer

    Hallo,

    ich komme einfach nicht weiter mit meinem Trigger. Der Trigger soll "BEFORE UPDATE" ausgeführt werden und den Wert, sollte er 1 sein, mit 22 zu überschreiben. Funktioniert aber nicht. Zum Abschluß steht immer 1 drin.
    Code:
    CREATE DEFINER=`root`@`%` TRIGGER `mail_BEFORE_UPDATE` BEFORE UPDATE ON `dbmail_messages` FOR EACH ROW BEGIN
        DECLARE mb BIGINT;
            SET mb = 1;
       
        if NEW.mailbox_idnr = mb then
            SET NEW.mailbox_idnr = 22;
        end if;
    END
    
    Reiner
     
  2. akretschmer

    akretschmer Datenbank-Guru

    vergessen, NEW zurückzuliefern?

    works for me:

    Code:
    test=# create table rebelhig (id int, val text);
    CREATE TABLE
    test=*# insert into rebelhig select s, 'val ' || s::text from generate_series(1,10) s;
    INSERT 0 10
    test=*# select * from rebelhig ;
     id |  val
    ----+--------
      1 | val 1
      2 | val 2
      3 | val 3
      4 | val 4
      5 | val 5
      6 | val 6
      7 | val 7
      8 | val 8
      9 | val 9
     10 | val 10
    (10 rows)
    
    test=*# create or replace function trg1_proc() returns trigger as $$begin if new.id = 1 then NEW.id = 22; end if; return new; end;$$language plpgsql;
    CREATE FUNCTION
    test=*# create trigger trg1 before update on rebelhig for each row  execute procedure trg1_proc();
    CREATE TRIGGER
    test=*# update rebelhig set val='xxx' where id = 1;
    UPDATE 1
    test=*# update rebelhig set val='yyy' where id = 2;
    UPDATE 1
    test=*# select * from rebelhig ;
     id |  val
    ----+--------
      3 | val 3
      4 | val 4
      5 | val 5
      6 | val 6
      7 | val 7
      8 | val 8
      9 | val 9
     10 | val 10
     22 | xxx
      2 | yyy
    (10 rows)
    
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden