MySQL Trigger Value in 5er reihe

Th3RaZe

Aktiver Benutzer
Beiträge
37
Hallo,

ich habe einen Trigger dort will ich erst etwas ausführen lassen wenn sich die zahl in der 5er Reihe befindet, dass heißt:

IF NEW.value = inDer5erReihe THEN

5,10,15,20,500,1000,10000

Wie kann ich sowas prüfen?

Grüße
 
Werbung:
Du kannst % nutzen. Und einen conditional TRIGGER wie in meinem 2. Beispiel:

Code:
test=# create table th3raze(id serial primary key, val int);
CREATE TABLE
test=*# create or replace function check_5() returns trigger as $$begin raise info 'in the trigger now'; if new.val % 5 = 0 then raise info 'hier tue ich was'; end if; return new; end; $$language plpgsql;
CREATE FUNCTION
test=*# create trigger trg_ohne_where before insert on th3raze for each row execute procedure check_5();
CREATE TRIGGER
test=*# insert into th3raze (val) values (4);
INFO:  in the trigger now
INSERT 0 1
test=*# insert into th3raze (val) values (5);
INFO:  in the trigger now
INFO:  hier tue ich was
INSERT 0 1
test=*# drop trigger trg_ohne_where on th3raze;
DROP TRIGGER

--
--
--

test=*# create trigger trg_mit_where before insert on th3raze for each row when (new.val % 5 = 0) execute procedure check_5();
CREATE TRIGGER
test=*# insert into th3raze (val) values (4);
INSERT 0 1
test=*# insert into th3raze (val) values (5);
INFO:  in the trigger now
INFO:  hier tue ich was
INSERT 0 1

wie man an den Ausgaben sieht, feuert der zweite TRIGGER nur, wenn bereits der bei der Trigger-Definition definierte Check erfüllt ist.
 
Btw.: die Syntax ist natürlich in MySQL anders, in der Trigger-Prozedur kann dann die Prüfung entfallen wenn diese schon in der Definition erfolgt - und MySQL kann das alles natürlich nicht mit dem conditional Trigger.

Die gute Nachricht: % kann MySQL, da bin ich mir recht sicher ;-)
 
NEW.value %5 = 0 heißt doch wenn der Rest 0 ist? also klappt das nur mit der 5 wenn ich input = 10 gebe dann ist ja der Rest = 2.
 
Werbung:
Code:
test=*# select s, s % 5 from generate_Series(1, 20) s;
 s  | ?column?
----+----------
  1 |  1
  2 |  2
  3 |  3
  4 |  4
  5 |  0
  6 |  1
  7 |  2
  8 |  3
  9 |  4
 10 |  0
 11 |  1
 12 |  2
 13 |  3
 14 |  4
 15 |  0
 16 |  1
 17 |  2
 18 |  3
 19 |  4
 20 |  0
(20 rows)

alle durch 5 teilbaren Zahlen haben mit % 5 dann als Result 0.
 
Zurück
Oben