1
我有這種形式的插入查詢:不希望分區密鑰成爲唯一密鑰的一部分。任何解決方法?
on INSERT into abc values .... on DUPLICATE KEY UPDATE ....
我在原來的表不分區,唯一的關鍵是對(subject_id, object_id)
,但現在我被ts
分區和我被迫具有獨特的密鑰(subject_id, object_id, ts)
因爲mysql要求在所有唯一鍵中有分區鍵。
這意味着我的插入查詢將會失敗,因爲插入具有與之前插入相同的subject_id和object_id,但不同的時間戳將被視爲唯一的新行,並將插入而不是所需的更新。
有什麼解決方法嗎?
CREATE TABLE `abc` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`subject_id` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`object_id` varchar(36) COLLATE utf8_unicode_ci NOT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`ts`),
UNIQUE KEY `userint_sub_type_obj` (`subject_id`,`object_id`, `ts`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
/*!50100 PARTITION BY RANGE (unix_timestamp(ts))
(PARTITION p2012_08_27 VALUES LESS THAN (1346025600) ENGINE = InnoDB,
PARTITION p2012_08_28 VALUES LESS THAN (1346112000) ENGINE = InnoDB,
PARTITION p2012_08_29 VALUES LESS THAN (1346198400) ENGINE = InnoDB,
PARTITION p2012_08_30 VALUES LESS THAN (1346284800) ENGINE = InnoDB,
PARTITION p2012_08_31 VALUES LESS THAN (1346371200) ENGINE = InnoDB) */