Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A função 'VALUES' do MySQL está obsoleta


Basicamente, o mysql está procurando remover um uso não padrão de longa data da função de valores para abrir caminho para algum trabalho futuro onde o padrão SQL permite usar uma palavra-chave VALUES para algo muito diferente, e porque como a função VALUES funciona em subconsultas ou não em uma cláusula ON DUPLICATE KEY UPDATE pode ser surpreendente.

Você precisa adicionar um alias à cláusula VALUES e, em seguida, usar esse alias em vez da função VALUES não padrão na cláusula ON DUPLICATE KEY UPDATE, por exemplo, mudança
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)

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

(Isso só funciona no mysql 8+, não em versões mais antigas ou em qualquer versão do mariadb até pelo menos 10.7.1)

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