2013-11-25 75 views
0

我有一个SQL查询,看起来像这样(WordPress选项)。重复的MySQL - 插入但不更新

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

也许复制http://stackoverflow.com/questions/2714587/mysql-on-duplicate-key-update-for-multiple-的行 - 插入式单查询 –

回答

3

更新option_nameoption_name将不起作用。您可以使用VALUES语法更新到从插入值:

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) 
; 
相关问题