astillon
Goto Top

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?

Content-ID: 169934

Url: https://administrator.de/forum/mysql-trigger-eine-zeile-abfragen-169934.html

Ausgedruckt am: 23.12.2024 um 12:12 Uhr

it-frosch
it-frosch 18.07.2011 um 16:47:38 Uhr
Goto Top
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
astillon
astillon 25.07.2011 um 10:19:44 Uhr
Goto Top
du meinst, wenn man in der tabelle auftrag etwas einfügt, sollte der trigger die tabelle auftrag nachbearbeiten? das wäre in der tat etwas geniales, nur sollen diese daten nicht mit den daten der anderen tabelle verschmolzen werden. die daten der Aufträge sollen als eine konstante gesehen werden. das ist schwer zu erklären, aber ich versuche es einmal.
der auftrag hat eine gesamstückzahl, die der chef gerne immer wissen will, nur wenn sich die mitarbeiter überlegen, hey lass ein team bilden, so bleibt die gesamtstückzahl des auftrages (gesehen als Projekt) immer noch gleich. nur das Projekt wird aufgeteilt in verschiedene positionen des gesamt auftrages. wenn jetzt ein mitarbeiter eine teilposition des auftrages übernimmt (welcher eigentlich anhand der daten nicht dafür zuständig ist), so ist die gesamtstückzahl des Auftrages immernoch gleich.


hab ich jetz vorbei geredet? xD

ich bin noch keine jahrzehnte im "datenbank" system, also bitte helft mir ein wenig, sollte ich falsche lösungs ansätze haben face-smile