挿入/更新しようとしているSQLテーブルには次の定義があります。
CREATE TABLE `place`.`a_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`some_id` bigint(20) NOT NULL,
`someOther_id` bigint(20) NOT NULL,
`some_value` text,
`re_id` bigint(20) NOT NULL DEFAULT '0',
`up_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `some_id_key` (`some_id`),
KEY `some_id_index1` (`some_id`,`someOther_id`),
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
ご覧のとおり、some_idとsomeOther_idはインデックスを共有しています。
次のような挿入/更新ステートメントを実行しようとしています。
INSERT INTO `a_table` (`re_id`,`some_id`,`someOther_id`,`up_id`,`some_value`) VALUES
(100,181,7,101,'stuff in the memo wow') On DUPLICATE KEY UPDATE
`up_id`=101,`some_value`='sampleValues'
idを指定しなかったので、挿入/更新ルールとしてインデックスキー(some_id_index1)にフォールバックすることを期待しています。ただし、挿入のみです。
明らかにこれは正しくありません。私はここで何が間違っているのですか?