Обновлять с trigger поле той же таблицы

Я хотел бы смочь обновлять поле той же таблицы, откуда он взрывается Trigger, я прочитал, что когда trigger взрывается таблица блокируется и не возможно изменять, но что возможно реализовывать по-другому.

CREATE TRIGGER `codigo_barras_update` AFTER UPDATE ON `persona`
FOR EACH ROW
BEGIN
   DECLARE codigoEAN VARCHAR(13);
   Select CONCAT('1000',LEFT(NEW.nif, 8), '0') INTO codigoEAN;
   UPDATE  persona SET codigo_barras =  codigoEAN  WHERE nif = NEW.nif; 
END;

То, что я хочу реализовать, состоит в том, чтобы обновлять штрих-код с NIF человека, тогда каждый раз, когда он был изменен NIF что прыгнул trigger и произведите новый штрих-код и я это сохранял в таблице явись лично. Недостаток, - в котором NIF и штрих-код находится в той же таблице. Была бы возможность мочь делать это или мочь реализовывать это по-другому?

1
задан 14.02.2017, 15:29
0 ответов

En vez de usar un Триггер ПОСЛЕ ОБНОВЛЕНИЯ , puedes usar un ПЕРЕД ОБНОВЛЕНИЕМ триггер. Иначе, и так далее, как известно, анте до полных дней ОБНОВЛЕНИЕ . Нет данных о том, что существует в настоящий момент. Нет необходимости в обновлении . ОБНОВЛЕНИЕ . Solo necesitas asignar el valor al campo directamente.

Aquí te dejo un ejemplo de usar un ДО ОБНОВЛЕНИЯ триггерный пункт запуска:

DELIMITER //
CREATE TRIGGER `codigo_barras_update` BEFORE UPDATE ON `persona`
FOR EACH ROW 
BEGIN
  SET NEW.codigo_barras = CONCAT('1000',LEFT(NEW.nif, 8), '0');
END;//
DELIMITER ;
4
ответ дан 03.12.2019, 17:03
  • 1
    Уже я упорядочил ошибку в có я говорю, уже существую могу codigoEAN, где он соответствовал в UPDATE. Большое спасибо. –  14.02.2017, 15:25
  • 2
    Если, который мне подает solució n, большое спасибо. –  14.02.2017, 15:31

Una alternativa sería utilizar un Stored Procedure en lugar de un Trigger. El UPDATE se haría a través de este procedimiento y en el mismo procedimiento generar el script que desees.

A este procedimiento le pasas el nuevo NIF y antes de hacer el UPDATE lo modificas como estás haciendo en el Trigger.

Este enlace te puede ser útil.

1
ответ дан 03.12.2019, 17:03
  • 1
    Большое спасибо, я попробую делать это с тем, что ты делил мне, и если я достигаю solució n я делю ее. Конечно соединение está зло, я это направляю, чтобы помещать dev.mysql.com/doc/connector-net/en/… –  14.02.2017, 15:10
  • 2
    Исправленный @Arkhan6 –  15.02.2017, 18:27

Теги

Похожие вопросы