Нужна помощь с триггером

Тема в разделе "Базы Данных", создана пользователем GowarD, 11 май 2017.

  1. GowarD

    GowarD

    Регистрация:
    23 мар 2017
    Сообщения:
    4
    Симпатии:
    0
    После вставки записи, если поле артикул (varchar) пусто - надо заполнить полем id, увеличив его на 20000.
    Создаю триггер:
    Код:
    DROP TRIGGER IF EXISTS `after_insert_product`;
    DELIMITER //
    CREATE TRIGGER `after_insert_product` AFTER INSERT ON `tbl_product`
     FOR EACH ROW BEGIN
        UPDATE `tbl_product` SET `artikul` = CONCAT(20000 + NEW.id) WHERE `artikul` = '' AND id = NEW.id;
    END
    //
    DELIMITER ;
    Почему триггер не заполняет артикул?
    Пробовал запросы:
    Код:
    UPDATE `tbl_product` SET `artikul` = CONCAT(20000 + NEW.id) WHERE `artikul` = '' OR `artikul` IS NULL;
    UPDATE `tbl_product` SET `artikul` = CONCAT(20000 + NEW.id) WHERE `artikul` = '';
    Последний запрос запущенный вручную - обновляет артикулы, а в триггере не работает.
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    потому что ваш триггер срабатывает на instert, а вы делаете update
     
  3. GowarD

    GowarD

    Регистрация:
    23 мар 2017
    Сообщения:
    4
    Симпатии:
    0
    Можно подробнее? Я как понимаю: "AFTER INSERT" после того как запись уже создана в таблице `tbl_product` обновить эту запись данными из нее. Если же делать INSERT то как узнать ID?
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    AFTER UPDATE? https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
    LAST_INSERT_ID() функция выдаст id последней вставленной записи