Trigger soll Wert verändern

rebelhig

Benutzer
Beiträge
16
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
 
Werbung:
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)
 
Zurück
Oben