Bonjour,
Je souhaite mettre à jour certaines lignes de ma table *uniquement* si une certaine valeur a changé; le problème c'est que cette valeur peut être à NULL... et qu'on ne peut pas comparer avec NULL !
Ex., soit la table...
Je veux mettre à jour la première adresse uniquement si elle a changé, mais le code suivant de fonctionne pas car l'expression évaluée "NULL <> 'rue de la Chapelle" ne donne rien ! Alors que , évidemment, la nouvelle adresse diffère de l'ancienne qui était inconnue...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE personne (prenom TEXT, nom TEXT, adresse TEXT, date_maj DATE); INSERT INTO personne VALUES ('Marcel', 'Picot', NULL, '2015-10-27'), ('Jules', 'Rambier', 'rue Gamma', '2015-10-27'), ('Leon', 'Citron', 'rue des Lilas', '2015-10-28');
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE personne SET adresse = 'rue de la Chapelle', date_maj = date('now') WHERE (adresse <> 'rue de la Chapelle') AND (prenom = 'Marcel'); SELECT * FROM personne;
De même dans l'autre sens, si la nouvelle adresse est "NULL", je dois pouvoir remplacer une ancienne adresse qui n'était pas à NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 prenom nom adresse date_maj Marcel Picot (null) 2015-10-27 => Au lieu de Marcel Picot rue de la Chapelle 2015-11-26 Jules Rambier rue Gamma 2015-10-27 Leon Citron rue des Lilas 2015-10-28
Pouvez-vous m'aider ?
http://sqlfiddle.com/#!5/cf2fa/3
Partager