Я импортирую прошлые счета из файлов CSV в таблицу MariaDB (MySQL).
Счет id
строится на других полях:
client-order[variant][-subinvoice]
например. 0123-5c-0
До сих пор значения для id
вычислялись пакетно с этим SQL-запросом:
UPDATE invoices SET
id = CONCAT (client,'-',
order,
IFNULL(variant,''),
IF(subinvoice IS NULL, '',CONCAT('-',subinvoice))
);
Поскольку столбец id
теперь является ПЕРВИЧНЫМ КЛЮЧОМ, мне необходимо преобразовать вышеуказанный запрос в триггер , который генерирует id
"на лету", когда вводятся данные из записей CSV.
Вот одно из возможных решений.
(Пользователь P. Salmon, который помог мне отладить мой код; спасибо ему!)
DELIMITER //
DROP TRIGGER IF EXISTS invoice_generate_id//
CREATE TRIGGER invoice_generate_id
BEFORE INSERT ON invoices
FOR EACH ROW
BEGIN
SET NEW.id = CONCAT (new.client,'-',
new.order,
IFNULL(new.variant,''),
IF(new.subinvoice IS NULL, '',CONCAT('-',new.subinvoice))
);
END//
DELIMITER ;