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

Программирование Базы данных Обход ошибки Duplicate entry в SQL

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 3 нед., 4 дн. назад.

  • Автор
    Сообщения
  • #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)

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