MySQL дубликат ключа для удаленного ключа - PullRequest
0 голосов
/ 28 июня 2018

У нас есть таблица следующей структуры,

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' на самом деле нет ни одной строки.

Я совершенно сбит с толку, почему я получил эту ошибку. Любая помощь по этому вопросу будет принята с благодарностью.

...