Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql 'Fonction VALUES' est obsolète

Fondamentalement, mysql cherche à supprimer une utilisation non standard de longue date de la fonction values ​​pour ouvrir la voie à des travaux futurs où la norme SQL permet d'utiliser un mot-clé VALUES pour quelque chose de très différent, et parce que la fonction VALUES fonctionne dans les sous-requêtes ou non dans une clause ON DUPLICATE KEY UPDATE peut être surprenant.

Vous devez ajouter un alias à la clause VALUES, puis utiliser cet alias au lieu de la fonction VALUES non standard dans la clause ON DUPLICATE KEY UPDATE, par ex. changer

INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)

à

INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz

(Cela ne fonctionne que sur mysql 8+, pas sur les anciennes versions ou dans n'importe quelle version de mariadb jusqu'à au moins 10.7.1)

Depuis https://dev.mysql.com/worklog/task/?id=13325 :