Create trigger after update mysql

285
21 марта 2017, 12:07

У меня в таблице есть 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*

Заранее спасибо

Answer 1

Вы меняете вводимые пользовательские данные до завершения транзакции - в этом случае лучше использовать время 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

Здесь я использовал:

  • строковые функции https://dev.mysql.com/doc/refman/5.7/en/string-functions.html
  • третьим аргументом SUBSTRING_INDEX рассчитал число вхождений - для удобства рекомендуется вынести это в отдельную функцию - https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#c8024

P.S. Для такой модерации, моё мнение, стоит рассмотреть возможность выноса кода на уровень ввода, а не записи в БД.

READ ALSO
Как получить корректную дату из базы данных

Как получить корректную дату из базы данных

В базе данных mysql есть поле dateВ записях базы данных дата выглядит как 2015-01-15 23:58:58

268
Просмотр описания стандартных классов Java

Просмотр описания стандартных классов Java

Как можно посмотреть описания стандартных классов, например, Integer или String через Intellij idea?

262
Ошибка деплоя glassfish в Intellij idea

Ошибка деплоя glassfish в Intellij idea

Здравствуйте! Я новичок в веб-разработкеНе могу правильно задеплоить glassfish

500
Как переносить текст в TextView?

Как переносить текст в TextView?

У меня есть, например, такой текст: "Вот какой-то \n рандомный текст"

225