Mysql trigger eine zeile abfragen
einen wunderschönen guten tag liebe gemeinde.
ich habe heute das schicke trigger system bei mysql gefunden, und mich schon einiger maßen durchgewurschelt.
allerdings habe ich ein kleines problem wegen den SELECT.
ich möchte gerne, dass wenn die tabelle1 einen update hatte, der trigger gestartet wird, und immer wieder was zusammen zählt.
das ist mein code, der bisher ganz ok läuft
/* /
drop trigger if exists mid_menge_anzahl;
-- Trigger DDL Statements
DELIMITER $$
USE `new_schema`$$
CREATE
TRIGGER `new_schema`.`mid_menge_anzahl`
AFTER UPDATE ON `new_schema`.`auftrag`
FOR EACH ROW
begin
if (old.auftrag_stueckzahl < new.auftrag_stueckzahl ) then
set @a:=new.auftrag_stueckzahl - old.auftrag_stueckzahl;
end if;
if (old.auftrag_stueckzahl > new.auftrag_stueckzahl ) then
set @a:=old.auftrag_stueckzahl - new.auftrag_stueckzahl;
end if;
if (old.auftrag_stueckzahl = new.auftrag_stueckzahl ) then
set @a:= new.auftrag_stueckzahl;
end if;
UPDATE
new_schema.mid_menge SET `mid_menge`.`menge`=`mid_menge`.`menge` + @a
WHERE
`mid_menge`.`mitarbeiter_id` = new.auftrag_mitarbeiter
AND
`mid_menge`.`auftrag_erstell_datum`= new.auftrag_erstell_datum;
END$$
/* /
nur, wenn ich jetz die tabelle auftrag update, dann macht der trigger nur was, wenn in der anderen tabelle mid_menge auch der datensatz besteht, also wenn
/* /
WHERE
`mid_menge`.`mitarbeiter_id` = new.auftrag_mitarbeiter
AND
`mid_menge`.`auftrag_erstell_datum`= new.auftrag_erstell_datum;
/*/
wahr ist. geht es, dass ich das so hinbekomme, er dennoch einen neuen datensatz anlegt, wenn mitarbeiter und erstelldatum nicht da sind?
ich habe heute das schicke trigger system bei mysql gefunden, und mich schon einiger maßen durchgewurschelt.
allerdings habe ich ein kleines problem wegen den SELECT.
ich möchte gerne, dass wenn die tabelle1 einen update hatte, der trigger gestartet wird, und immer wieder was zusammen zählt.
das ist mein code, der bisher ganz ok läuft
/* /
drop trigger if exists mid_menge_anzahl;
-- Trigger DDL Statements
DELIMITER $$
USE `new_schema`$$
CREATE
TRIGGER `new_schema`.`mid_menge_anzahl`
AFTER UPDATE ON `new_schema`.`auftrag`
FOR EACH ROW
begin
if (old.auftrag_stueckzahl < new.auftrag_stueckzahl ) then
set @a:=new.auftrag_stueckzahl - old.auftrag_stueckzahl;
end if;
if (old.auftrag_stueckzahl > new.auftrag_stueckzahl ) then
set @a:=old.auftrag_stueckzahl - new.auftrag_stueckzahl;
end if;
if (old.auftrag_stueckzahl = new.auftrag_stueckzahl ) then
set @a:= new.auftrag_stueckzahl;
end if;
UPDATE
new_schema.mid_menge SET `mid_menge`.`menge`=`mid_menge`.`menge` + @a
WHERE
`mid_menge`.`mitarbeiter_id` = new.auftrag_mitarbeiter
AND
`mid_menge`.`auftrag_erstell_datum`= new.auftrag_erstell_datum;
END$$
/* /
nur, wenn ich jetz die tabelle auftrag update, dann macht der trigger nur was, wenn in der anderen tabelle mid_menge auch der datensatz besteht, also wenn
/* /
WHERE
`mid_menge`.`mitarbeiter_id` = new.auftrag_mitarbeiter
AND
`mid_menge`.`auftrag_erstell_datum`= new.auftrag_erstell_datum;
/*/
wahr ist. geht es, dass ich das so hinbekomme, er dennoch einen neuen datensatz anlegt, wenn mitarbeiter und erstelldatum nicht da sind?
Please also mark the comments that contributed to the solution of the article
Content-Key: 169934
Url: https://administrator.de/contentid/169934
Printed on: April 25, 2024 at 05:04 o'clock
2 Comments
Latest comment
Hallo astillon,
warum müssen Reporting und Datenbankprogrammierungen immer schlechte Datenpflege abfangen?!
Wenn die Felder keine verlässlichen Werte beinhalten dann setze entweder einen Trigger auf die Felder der sie beim Anlegen eines neuen Datensatzes selbst
befüllt und fülle die vorhandenen leeren Datensätze mit einem definierter Wert oder lasse die Datensätze nachpflegen.
grüße vom it-frosch
warum müssen Reporting und Datenbankprogrammierungen immer schlechte Datenpflege abfangen?!
Wenn die Felder keine verlässlichen Werte beinhalten dann setze entweder einen Trigger auf die Felder der sie beim Anlegen eines neuen Datensatzes selbst
befüllt und fülle die vorhandenen leeren Datensätze mit einem definierter Wert oder lasse die Datensätze nachpflegen.
grüße vom it-frosch