0

このような 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
;

は何ですか

値は正しく挿入されますが、別の値で再度実行すると、値が新しい値に更新されることが期待されます。

しないこと

クエリを 2 回目に実行したときに値が更新されません。値を変更します。SQL エラーは発生しません。0 行が影響を受けました。

何をすべきか

「値」を「他の値」に変更してクエリを実行すると、category_children が既に存在する場合、値を置き換える必要があります。

質問

私は何を間違っていますか?私はmysql 5.5.24を使用しています。

4

1 に答える 1

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)
;
于 2013-11-25T10:30:16.490 に答える