Обход ошибки Duplicate entry в SQL

Базы данных Обход ошибки Duplicate entry в SQL

  • В этой теме 0 ответов, 1 участник, последнее обновление 1 год, 7 месяцев назад сделано Васильев Владимир Сергеевич.
Просмотр 0 веток ответов
  • Автор
    Сообщения
    • #5303
      @admin

      Как обойти ошибку Duplicate entry (дублирование записей) при вставке INSERT чтобы не делать лишнюю проверку SELECT данные:

      CREATE TABLE IF NOT EXISTS `test` (
        `id` int(2) NOT NULL AUTO_INCREMENT,
        `username` char(10) NOT NULL,
        `lastdate` date NOT NULL,
        PRIMARY KEY (`id`),
        UNIQUE KEY `username` (`username`)
      ) AUTO_INCREMENT=1005 ;
      
      INSERT INTO `test` VALUES
      (50, 'test', '2011-11-01'),
      (102, 'admin', '0000-00-00'),
      (999, 'root', '2002-12-12');

      чтобы изменить дублирующие значение делаем так

      INSERT INTO `test`
      SET `username`='admin', `lastdate`=now()
      ON DUPLICATE KEY UPDATE `lastdate`=now(), `id`=LAST_INSERT_ID(`id`);
      /*после этого можно смело просить*/ SELECT LAST_INSERT_ID();

      в результате получаем id = 102 если будет не дублирующие значение

      INSERT INTO `test`
      SET `username`='new', `lastdate`=now()
      ON DUPLICATE KEY UPDATE `lastdate`=now(), `id`= LAST_INSERT_ID(`id`);
      /*после этого можно смело просить*/ SELECT LAST_INSERT_ID();

      в результате получаем id = 1005 (т.к. AUTO_INCREMENT=1005)

Просмотр 0 веток ответов
  • Для ответа в этой теме необходимо авторизоваться.
×