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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169934
Url: https://administrator.de/contentid/169934
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
2 Kommentare
Neuester Kommentar
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