У нас есть таблица следующей структуры,
CREATE TABLE `DateTracker` (
`ReferenceType` varchar(50) NOT NULL,
`Date` date NOT NULL,
`LastRunDate` datetime DEFAULT NULL,
PRIMARY KEY (`ReferenceType`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Эта таблица будет обновлена на основе данных, созданных в других таблицах, и последней даты доступности данных.
Например, если у нас есть таблица с именем users,
CREATE TABLE `User` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Username` varchar(50) NOT NULL,
`Date` date NOT NULL
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `user` (`Id`,`Username`,`Date`) VALUES (1,'user1','2018-06-22');
INSERT INTO `user` (`Id`,`Username`,`Date`) VALUES (2,'user2','2018-06-24');
Тогда, поскольку последняя обработанная запись имеет дату как '2018-06-24'
, мы будем иметь записи в таблице DateTracker
как,
INSERT INTO `DateTracker` (`ReferenceType`,`Date`,`LastRunDate`) VALUES ('User','2018-06-24','2018-06-28 12:56:37');
Теперь, когда мы удаляем запись в таблице DateTracker
вручную, сценарий, который генерирует эти данные, создаст новую запись и будет обновляться при дальнейшем запуске сценария.
Проблема в том, что иногда он показывает "1062: Duplicate entry 'User' for key 'PRIMARY'"
, когда мы вставляем его после удаления, но в столбце ReferenceType
'User'
на самом деле нет ни одной строки.
Я совершенно сбит с толку, почему я получил эту ошибку. Любая помощь по этому вопросу будет принята с благодарностью.