Trigger
Hallo zusammen
Ich bin an einer Datenbank für ein ERP System dran (Schulprojekt) Jetzt möchte ich mittels Trigger automatisch eine Bestellung auslösen, wenn der Mindestbestand des Artikels erreicht wird. So weit so gut. Der Trigger wird vor einem Update der Tabelle Artikel ausgelöst. In der Tabelle Bestellung gibt es das Attribut "ArtikelID" Kurzes Beispiel Bestellung(ID, ArtikelID, Menge) values (@ID, ?, 10) ID und Menge sind nicht das Problem, sondern die ArtikelID. Ich möchte die ID des Artikels setzen, welcher den Trigger ausgelöst hat. So in der Art this.ID oder so ähnlich. Leider habe ich nichts gefunden was mir weiterhilft. Liebe Grüsse Jabberwocky |
AW: Trigger
Zitat:
|
AW: Trigger
Mit NEW.* und OLD.* werden doch Bedingungen gesetzt sowie Einträge in der Tabelle geändert? Ich sehe hier den Zusammenhang zu meinem Problem nicht ganz.
Das Attribut ArtikelID ist ein Foreign Key welcher zur ID des Artikels verweist. Diese ändert sich ja nicht, da eine neue Bestellung des entsprechenden Artikels gemacht werden muss. |
AW: Trigger
Zitat:
|
AW: Trigger
Ganz genau. Ich habe eine Tabelle mit Artikeln, wenn ein Artikel unter den Mindestbestand fällt gibt es einen neuen Datensatz in der Tabelle Bestellung. Dort wird die Artikel-ID des Artikels benötigt, welcher die Bestellung auslöst.
|
Genau. Und dazu kannst Du NEW.* verwenden.
Code:
test=# create table artikel (id int primary key, anzahl int, mindestbestand int); PS.: um zu verhindern, daß bei der nächsten Abbuchung noch einmal bestellt wird, einfach in der bestellen-Tabelle einen Unique Index auf Artikel-ID. |
AW: Trigger
Alles klar, jetzt verstehe ich was du meinst. Ich werde das morgen gleich mal versuchen. Vielen Dank für deine Hilfe
|
AW: Trigger
Vielen Dank nochmal für eure Hilfe. Das Script wird jetzt ohne Fehler ausgeführt.
Jetzt stehe ich jedoch an einem anderen Problem. Ich habe dem Trigger gesagt, er soll eine Bestellung ausführen, sobald der Bestand des Artikels kleiner als 5 ist. Blöderweise ist es jetzt nicht mehr möglich den Bestand eines Artikels unter 5 zu setzen. Leider leuchtet mir nicht ein worin genau der Fehler besteht. Ich vermute jedoch das meine if abfrage das Problem verursacht. if old.lagerbestand <> new.lagerbestand and new.lagerbestand < 5 then Vielen Dank für eure Hilfe |
AW: Trigger
In meinem Beispiel funktioniert das.
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:32:33 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.