У меня в таблице есть ID, и tr_code,
ID tr_code
15 587-20140125-79-15
255 655-20140525-65-255
4587 611-20160815-72-4587
...............................
35681 715-20170125-45-35681
мне нужен создать тригер чтобы проверял если ID не совпадает с последним цифрами после - на tr_code, исправил:
НАПРИМЕР
ID tr_code
*381* 587-20140125-79-*384*
Он бы исправил на так
ID tr_code
*381* 587-20140125-79-*381*
Заранее спасибо
Вы меняете вводимые пользовательские данные до завершения транзакции - в этом случае лучше использовать время BEFORE. test - название вашей таблицы:
CREATE TRIGGER `test_checkCode` BEFORE UPDATE ON `test`
FOR EACH ROW
BEGIN
DECLARE code integer default 0;
DECLARE newCode varchar(250) default '';
SET code = RIGHT(NEW.`tr_code`, LENGTH(SUBSTRING_INDEX( REVERSE(NEW.`tr_code`), '-', 1 ) ) );
if(NEW.ID != code) THEN
SET newCode = CONCAT(SUBSTRING_INDEX( new.tr_code, '-', (LENGTH( new.tr_code ) - LENGTH( REPLACE( new.tr_code, '-', '' ) ) ) ), '-' , NEW.ID
) ;
SET NEW.`tr_code` = newCode;
END IF;
END
Здесь я использовал:
P.S. Для такой модерации, моё мнение, стоит рассмотреть возможность выноса кода на уровень ввода, а не записи в БД.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости