Zasadniczo mysql dąży do usunięcia od dawna niestandardowego użycia funkcji wartości, aby utorować drogę do niektórych przyszłych prac, w których standard SQL pozwala na użycie słowa kluczowego WARTOŚCI do czegoś zupełnie innego i ponieważ funkcja WARTOŚCI działa w podzapytaniach, czy nie w klauzuli ON DUPLICATE KEY UPDATE może być zaskakujące.
Należy dodać alias do klauzuli VALUES, a następnie użyć tego aliasu zamiast niestandardowej funkcji VALUES w klauzuli ON DUPLICATE KEY UPDATE, np. zmiana
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
do
INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz
(Działa to tylko na mysql 8+, nie na starszych wersjach lub w jakiejkolwiek wersji mariadb do co najmniej 10.7.1)
Od https://dev.mysql.com/worklog/task/?id=13325 :