0

私はここで盲目になります...このSQLでエラーを見つけることができないようです:

INSERT INTO sankt_groups_order (
    parent_group_id, 
    child_group_id, 
    order
) VALUES (?,?,?)
ON DUPLICATE KEY UPDATE 
    order = ?
;

このエラーが発生します:

SQLSTATE[42000]: Syntax error or access violation: 
    1064 You have an error in your SQL syntax; check the manual that 
    corresponds to your MySQL server version for the right syntax to use 
    near 'order ) VALUES ('65',NULL,'3') ON DUPLICATE KEY UPDATE order = '3'' 

次に、このSQLは私が思うことをしますか?行全体が欠落している場合は挿入し、存在する場合は順序を更新するために必要です...インデックス作成parent_group_idchild_group_id一意があります。

4

1 に答える 1

3

ordermysqlで予約語である場合は、エスケープする必要があります。

    child_group_id, 
    `order`
    ^--   ^--- backticks to escape
) VALUES (?,?,?)

はい、それはあなたが思うことをするべきです。一意/主キー違反がある場合は、orderフィールドのみを変更します。

于 2012-11-29T20:35:08.913 に答える