MySQL : des triggers à la place des check constraints !

MySQL : des triggers à la place des check constraints !Le moteur de base de données relationnel Open Source MySQL ne dispose toujours pas à ce jour de CHECK CONSTRAINT, ce qui a l'inconvénient de nous amener à coder très inutilement ! Dans Oracle, PostgreSQL, SQL Server par exemple, cette clause permet de définir une contrainte sur champ, une contrainte sur table. La seule possibilité de contrainte sous MySQL est la clause NOT NULL !

Création de trigger sous MySQL

Dans l'exemple ci-dessous, le trigger - ou déclencheur in French - convertit automatiquement le champ contact_ville en majuscules avec la fonction UPPER.
DELIMITER $$
DROP TRIGGER IF EXISTS grc.client_before_insert$$
CREATE TRIGGER grc.client_before_insert
BEFORE INSERT ON grc.client
  FOR EACH ROW
  BEGIN
    set NEW.client_ville=UPPER(NEW.client_ville);
  END
$$
DELIMITER;

Un trigger en forme de check constraint !

Il s'agit dans l'exemple de forcer à ce que le mail saisi respecte un certain format en nous appuyant sur les expressions régulières ! Le code mérite d'être affiné. Pensez à ajouter un autre trigger sur l'événement BEFORE UPDATE !
DELIMITER $$
DROP TRIGGER grc.contact_before_insert $$
CREATE TRIGGER grc.contact_before_insert
BEFORE INSERT ON grc.contact
  FOR EACH ROW 
  BEGIN
    IF NOT NEW.contact_email REGEXP '^[a-z0-9]+@[a-z0-9]+\.(fr|com)$' THEN
      SET NEW.contact_email = NULL;
    END IF;
  END;
$$
DELIMITER;

Dsfc Dsfc

MySQL : des triggers à la place des check constraints !
6 votes, 5.00 avg. rating (98% score)
Tags : , , , , , , , , ,
Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)


*