1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

MYSQL Trigger

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von infobb, 5 Juni 2019.

  1. infobb

    infobb Benutzer

    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 :)
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. castorp

    castorp Datenbank-Guru

    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.
     
  4. infobb

    infobb Benutzer

    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: 5 Juni 2019
  5. ukulele

    ukulele Datenbank-Guru

    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 ;-)
     
  6. castorp

    castorp Datenbank-Guru

    Nachdem die Definition eines check constraint kommentarlos ignoriert wird, wird auch die Tabelle nicht geändert ;)
     
    ukulele und akretschmer gefällt das.
  7. akretschmer

    akretschmer Datenbank-Guru




    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden