Я использую PHP для вставки в базу данных MYSQL.Существует триггер ДО ВСТАВКИ НА table1.Затем я вставляю данные BULK в таблицу MYSQL2.Запрос на вставку для table2 находится внутри PHP цикла while.Вот порядок транзакции и триггера:
START TRANSACTION
INSERT INTO TABLE1 <-TRIGGER below
while(INSERT INTO TABLE2) // Comment: One INSERT per row
COMMIT
------------- ТРИГГЕР НЕ РАБОТАЕТ -----------------
delimiter $$
CREATE
TRIGGER `sample`.`new_gm_sequence`
BEFORE INSERT ON `sample`.`frtgoodsmovement`
FOR EACH ROW
begin
declare wno varchar(20);
select concat(numberprefix, cast(slno+1 as char)) into wno
from frtnumbercontrol
where codetype = 'GMTY'
and code = new.gmtype
and new.gmdate between frdate and todate;
set new.gmno = wno;
update frtnumbercontrol set slno = slno+1
where codetype = 'GMTY'
and code = new.gmtype
and new.gmdate between frdate and todate;
end
$$
gmno
в указанном выше триггере - это поле, которое будет автоматически создано в таблице 1 (frtgoodsmovement).Это не работает в производстве, но работает в непроизводстве.Результаты поля для table2 идут к другой таблице.
Вот скриншот: https://imgur.com/a/7zHXH45
Во время ручного ввода данных, GM No генерирует.В чем может быть проблема?
Примечание. Для вставки из 100 записей требуется около 1 секунды.Должен ли я сделать это быстрее?Тогда триггер будет работать с PHP BULK INSERT?