Nous avons une table 'journal' dans MySQL qui a une colonne 'cdate' de type date et qui est une clé primaire.
Le but est de transposer toutes les valeurs de la colonne d'une année dans le future.
Si on réussi a trouver la requête pour effectuer la transposition, on peut se heurter à une problème de duplication de clé.
Mais une solution consiste d'abord à désactiver les clé primaire, puis d’effectuer la transposition et enfin de rétablir les clé en nettoyant les doublons éventuellement générés par la transposition.
-- supprime les clefs primaires,
-- sans cela le requete suivante peut entrainer des erreurs
-- si le cacul produit des doublons
DROP PRIMARY KEY;
-- effectue la transposition et
-- pourraient generer les doublons
UPDATE journal
SET cdate = DATE_ADD(cdate, INTERVAL 1 YEAR);
-- defini les clé primaires
-- en supprimant les doublons
ALTER IGNORE TABLE journal
ADD PRIMARY KEY (cdate)
De façon général, on adaptera l’intervalle de transposition à sa guise selon la syntaxe de MySQL, et on utilisera DATE_SUB au lieu de DATE_ADD pour transposer dans le passé.
Commentaires