0

MySQL の ON DUPLICATE KEY UPDATE で問題が発生しました。以下は、実行しようとしているクエリです。

INSERT INTO `Overall` ( `rsn` , `starting_xp` , `starting_lvl` ) VALUES ( 'iWader' , '195843626' , '2281' ) ON DUPLICATE KEY UPDATE `current_xp` = '195843626' AND `current_lvl` = '2281'
  • 正常に挿入されますが、重複がある場合は更新されず、エラーもスローされません。
  • PMA を介してクエリを実行すると、エラーが返されず、更新されません
  • ON DUPLICATE KEY UPDATE セクションを削除すると、重複キー エラーが返される

これは私のテーブルの構造です

CREATE TABLE IF NOT EXISTS `overall` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rsn` varchar(12) NOT NULL,
  `starting_xp` int(10) unsigned NOT NULL,
  `starting_lvl` int(10) unsigned NOT NULL,
  `current_xp` int(10) unsigned NOT NULL,
  `current_lvl` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `rsn` (`rsn`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
4

2 に答える 2

1

フィールドで使用する ON DUPLICATE KEY UPDATE必要がない場合は、代わりに使用してください。and,

ON DUPLICATE KEY UPDATE `current_xp` = '195843626', `current_lvl` = '2281'
于 2012-03-03T18:57:28.947 に答える
1

これを試して:

INSERT INTO `Overall` ( `rsn` , `starting_xp` , `starting_lvl` ) VALUES ( 'iWader' , '195843626' , '2281' ) ON DUPLICATE KEY UPDATE `current_xp` = '195843626', `current_lvl` = '2281';

ANDあなたの節のUPDATEは間違っています。は、 「is foo true bar true?」のようなブール式ANDで使用されます。ここでは、列 current_xp、current_lvl を更新します。AND

于 2012-03-03T18:49:46.467 に答える