MYSQL Trigger

infobb

Benutzer
Beiträge
5
Halli hallo,

ich habe eine Tabelle Kunde mit Einkaufsdatum und Rückgabedatum und soll dafür einen insert trigger und update trigger erstellen, sodass Rückgabedatum nicht vor dem Einkaufsdatum liegen kann im Fehlerfall soll eine Fehlermeldung erfolgen
Wäre über einen Lösungsweg dankbar
danke schonmal für alle Rückmeldungen :)
 
Werbung:
Ich würde ja einen CONSTRAINT auf der Tabelle empfehlen, der ist i.d.R. einfacher und sollte das problemlos machen können. Allerdings weiß ich von MySQL das es einige CONSTRAINTs gepflegt irgnoriert. Welches DBMS welche Version? Teste mal einen Constraint.
 
Dafür wäre ein CHECK CONSTRAINT erforderlich und die werden von MySQL (oder MariaDB) immer noch nicht unterstützt. Ein Trigger ist wohl tatsächlich die einzige Möglichkeit.
 
die tabelle darf leider nicht mehr geändert werden deswegen soll ein insert und update trigger erstellt werden

muss auch noch dazufügen, dass ich das erste mal einen trigger programmieren werde
 
Zuletzt bearbeitet:
Leider ist die MySQL Trigger Syntax doch sehr anders als bei MS daher kann ich zum Trigger nicht sehr viel beitragen. Ob ein Constraint die Tabelle verändert darüber ließe sich aber streiten ;-)
 
Werbung:
Halli hallo,

ich habe eine Tabelle Kunde mit Einkaufsdatum und Rückgabedatum und soll dafür einen insert trigger und update trigger erstellen, sodass Rückgabedatum nicht vor dem Einkaufsdatum liegen kann im Fehlerfall soll eine Fehlermeldung erfolgen
Wäre über einen Lösungsweg dankbar
danke schonmal für alle Rückmeldungen :)




wie andere schon sagten: das ginge sehr einfach über einen Constraint, den kann man auch nachträglich definieren:

Code:
andreas@[local]:5432/test# create table kunde(kunde text, einkauf date, rueckgabe date);
CREATE TABLE
andreas@[local]:5432/test# alter table kunde add check (rueckgabe > einkauf);
ALTER TABLE
andreas@[local]:5432/test# insert into kunde values ('Max','2019-01-01','2019-02-01');
INSERT 0 1
andreas@[local]:5432/test# insert into kunde values ('NoGo','2019-01-01','2018-02-01');
ERROR:  new row for relation "kunde" violates check constraint "kunde_check"
DETAIL:  Failing row contains (NoGo, 2019-01-01, 2018-02-01).
andreas@[local]:5432/test#

Das ist jetzt aber kein MySQL, sondern PostgreSQL. MySQL 'versteht' die Syntax für einen solchen CHECK-Constraint, beachtet das aber dann nicht. Ein TRIGGER wäre ebenfalls möglich, der sollte auch in mySQL das gewünschte leisten. Da ich MySQL nicht verwende, kann ich es leider nicht vorführen.
 
Zurück
Oben