hallo, experten!
Ich habe ähnliche Frage. In kenne mich schon ein bisschen mit DML, DDL und TCL aus, aber mit trigger/proceduren und funktionen nicht wirklich.
Und hier ist meine frage.
z.B. ich habe zwei Tabellen:
kunde (kID, name, vorname, aktuelle_adresse, ....)
auftrag (aID, alte_adresse, neue_adresse, staus, datum, kID) <- wo kID - fremdschlüßel
Feld [status] aus der Tabelle auftrag ist folgendes Datentyp - ENUM('JA', 'NEIN') und symbolisiert den status ERLEDIGT? (JA/NEIN). Default wert ist NEIN
Die datenbank ist für ein 'umzugsunternehmen' gedacht..obohl das hier ist nur 'Spielerei'...
Mein Wunsch ist so....
Jeder gespeicherte Auftrag hat status = 2 (ENUM = 'NEIN'). Nachdem der Umzug beendet wurde, soll man den Status auf 1 (ENUM = 'JA') ändern. Da der auftrag nun beebdet ist und der Kunde jetzt unter neue Adressde (auftrag.neue_adresse) wohnt, sollen die Daten aktualisiert werden. d.H. Werte aus dem Feld ADRESSE aus der Tabelle kunde soll jetzt mit dem Wert aus dem Feld NEUE_ADRESSE der Tabelle auftrag ersetz werden.
BeispielsDatenuasder Tabellen:
kunde (1, Mustermann, Max, Datenbankstrasse 1a, .....)
auftrag (5, Datenbankstrasse 1a, Relationshof 23b, NEIN, 2009-09-20, 1)
zufuss würde es dann so aussehen:
ERGEBNISS: auftrag (5, Datenbankstrasse 1a, Relationshof 23b, JA, 2009-09-20, 1)
Danach wird die aktuelle_adresse bearbeitet
ERGEBNISS: kunde (1, Mustermann, Max, Relationshof 23b, .....)
Wie gesagt, 'zufuss' funktioniert alles wunderbar, aber wäre es möglich diese 'Aufträge' zu automnatisieren ? Ist das möglich dafüt ein TRIGGER oder PROCEDUR oder so gar FUNKTION zu schreiben ?
Ich habe schon versucht selbst ein Trigger zu erstellen ,aber irgendwie klappt es nicht
P.S. Ich benutze Mysql 5.0.77 unter Ubuntu
Ich habe ähnliche Frage. In kenne mich schon ein bisschen mit DML, DDL und TCL aus, aber mit trigger/proceduren und funktionen nicht wirklich.
Und hier ist meine frage.
z.B. ich habe zwei Tabellen:
kunde (kID, name, vorname, aktuelle_adresse, ....)
auftrag (aID, alte_adresse, neue_adresse, staus, datum, kID) <- wo kID - fremdschlüßel
Feld [status] aus der Tabelle auftrag ist folgendes Datentyp - ENUM('JA', 'NEIN') und symbolisiert den status ERLEDIGT? (JA/NEIN). Default wert ist NEIN
Die datenbank ist für ein 'umzugsunternehmen' gedacht..obohl das hier ist nur 'Spielerei'...
Mein Wunsch ist so....
Jeder gespeicherte Auftrag hat status = 2 (ENUM = 'NEIN'). Nachdem der Umzug beendet wurde, soll man den Status auf 1 (ENUM = 'JA') ändern. Da der auftrag nun beebdet ist und der Kunde jetzt unter neue Adressde (auftrag.neue_adresse) wohnt, sollen die Daten aktualisiert werden. d.H. Werte aus dem Feld ADRESSE aus der Tabelle kunde soll jetzt mit dem Wert aus dem Feld NEUE_ADRESSE der Tabelle auftrag ersetz werden.
BeispielsDatenuasder Tabellen:
kunde (1, Mustermann, Max, Datenbankstrasse 1a, .....)
auftrag (5, Datenbankstrasse 1a, Relationshof 23b, NEIN, 2009-09-20, 1)
zufuss würde es dann so aussehen:
PHP Code:
/* Benutzer ände5r den Status in der Tabelle auftrag Nr. 5 [ERLEDIGT->JA] */
UPDATE auftrag SET status = 1 WHERE aID = 5
Danach wird die aktuelle_adresse bearbeitet
PHP Code:
/* Ersetzung der aktuellen Adresse aus der Tabelle kunbde mit der neuen Adresse aus der Tabelle auftrag*/
UPDATE kunde SET aktuelle_adresse = (SELECT neue_adresse FROM auftrag WHERE aID = 5 AND kID = 1) WHERE kID = 1
Wie gesagt, 'zufuss' funktioniert alles wunderbar, aber wäre es möglich diese 'Aufträge' zu automnatisieren ? Ist das möglich dafüt ein TRIGGER oder PROCEDUR oder so gar FUNKTION zu schreiben ?
Ich habe schon versucht selbst ein Trigger zu erstellen ,aber irgendwie klappt es nicht
PHP Code:
CREATE TRIGGER update_aktuelle_ardesse
AFTER UPDATE ON auftrag
FOR EACH ROW BEGIN
IF NEW.status = 1 THEN
UPDATE kunde SET OLD.aktuelle_adresse =
/* ... und hier komm ich nicht weiter */
END IF;
END;
Comment