web-dev-qa-db-fra.com

MySQL déclencheur pour insérer / mettre à jour la colonne de la date de la colonne DateTime

question probablement simple mais ne peut pas le faire fonctionner:

J'ai une table avec deux colonnes DateTime. Afin de configurer un indice de date et de faire des requêtes plus simples, j'ai ajouté deux colonnes de date à côté.

Maintenant, je voudrais, chaque fois qu'une ligne est insérée ou mise à jour, pour extraire la partie de date des colonnes DateTime, et insérer ou mettre à jour les colonnes de date.

Pas très bien versé avec des déclencheurs, les pointeurs seraient donc très appréciés.

version du serveur: 5.1.49-3

1
Mathias

On ne sait pas pourquoi tu as besoin de cela mais en supposant que la table ressemble à quelque chose comme

CREATE TABLE Table1
    (`id` int not null auto_increment primary key, 
     `dt1` datetime, 
     `dt2` datetime, 
     `d1`  date, 
     `d2`  date);

vos déclencheurs pourraient regarder la voie suivante

CREATE TRIGGER tg_bi_table1
BEFORE INSERT ON table1
FOR EACH ROW
  SET NEW.d1 = DATE(NEW.dt1), 
      NEW.d2 = DATE(NEW.dt2);

CREATE TRIGGER tg_bu_table1
BEFORE UPDATE ON table1
FOR EACH ROW
  SET NEW.d1 = DATE(NEW.dt1), 
      NEW.d2 = DATE(NEW.dt2);

Voici sqlfiddle Démo

2
peterm