我有一个看起来像这样的SQL查询(WordPress选项)。
INSERT INTO wp_options (option_name, option_value, autoload) VALUES
(
'category_children',
'a value',
'yes'
),
(
'test_options',
'testing',
'yes'
)
ON DUPLICATE KEY UPDATE
option_name=option_name,
option_value=option_value,
autoload=autoload
;
什么是
它正确插入值但是如果我再次使用不同的值运行它,我希望它将值更新为新值。
不做什么
第二次运行查询时,它不会更新值。我改变了价值观。我没有SQL错误。 0行受影响。
应该是什么
如果我将“某个值”更改为“其他某个值”并运行查询,则如果category_children已存在,则应替换该值。
问题
我做错了什么?我使用mysql 5.5.24。
答案 0 :(得分:3)
将option_name
更新为option_name
将无效。您可以使用VALUES
语法更新为insert:
INSERT INTO wp_options (option_name, option_value, autoload) VALUES
(
'category_children',
'a value',
'yes'
),
(
'test_options',
'testing',
'yes'
)
ON DUPLICATE KEY UPDATE
option_name=VALUES(option_name),
option_value=VALUES(option_value),
autoload=VALUES(autoload)
;