MySQL Как избежать создания дубликатов строк в таблице без уникальных индексов и ключей?
Имеется таблица:
CREATE TABLE `parts_images` (
`parent_guid` VARCHAR(36) NOT NULL COLLATE 'utf8mb4_general_ci',
`image_guid` VARCHAR(36) NOT NULL COLLATE 'utf8mb4_general_ci',
`updated` DATETIME NOT NULL,
INDEX `parent_guid` (`parent_guid`) USING BTREE,
INDEX `image_guid` (`image_guid`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;
Как избежать возникновения дублей при добавлении записей? Если бы был уникальный индекс или ключ, то использовал бы INSERT .... ON DUPLICATE KEY UPDATE, но с простыми индексами это не проходит. Используя такой вариант, не обновляется поле updated:
INSERT INTO parts_images (parent_guid, image_guid, updated)
SELECT 'ceaa75d5-4621-11ec-8718-408d5c5e066d',
'a3c9357c-b152-11ec-b37a-408d5c5e066d',
'2023-01-30 22:03:55'
WHERE NOT EXISTS (SELECT 1
FROM parts_images
WHERE (parent_guid LIKE 'ceaa75d5-4621-11ec-8718-408d5c5e066d'
AND image_guid LIKE 'a3c9357c-b152-11ec-b37a-408d5c5e066d'));
Как выйти из положения, чтобы при совпадении первого и второго поля, обновлялось третье, а если записи с такой парой нет, то чтобы она добавлялась? Спасибо.
Источник: Stack Overflow на русском