powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ошибка при работе триггера на INSERT
7 сообщений из 7, страница 1 из 1
Ошибка при работе триггера на INSERT
    #39837680
UncleFedor32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

При работе триггера BEFORE INSERT в таблицу table необходимо выполнить
Код: sql
1.
UPDATE table set pole_date=now() where id=new.id

(id не ключевое поле)

При вставке новой позиции в таблицу table выходит сообщение
#1442 - Can't update table 'table' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.


Почитал, что вроде как MySQL при выполнении триггера не любит выполнять изменение данных в позициях, не относящихся к новой позиции, которая инициирует работу триггера.

Подскажите, пожалуйста, как можно выйти из ситуации.

Заранее благодарен.
...
Рейтинг: 0 / 0
Ошибка при работе триггера на INSERT
    #39837689
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ошибка в логике построения триггера, а не в его работе.
Триггер работает с ОДНОЙ записью. Поэтому никаких UPDATE ни с каким отборами не требуется, чтобы внести изменения в новые значения полей ЭТОЙ одной записи.

Код: sql
1.
2.
3.
4.
5.
CREATE TRIGGER tr
BEFORE UPDATE
ON table
FOR EACH ROW
SET NEW.pole_date=now();



Однако на самом деле для решения этой задачи триггер не нужен в принципе. pole_date - оно же DATETIME или TIMESTAMP (если гений-дизайнер вдруг сделал его текстовым - изменить)? ну тогда достаточно почитать Reference manual в части Automatic Initialization and Updating for TIMESTAMP and DATETIME и не изобретать велосипедов.
...
Рейтинг: 0 / 0
Ошибка при работе триггера на INSERT
    #39837758
UncleFedor32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое, уже изучаю)

Не подскажете как поступать если изменяемое поле не имеет отношение к датам?
...
Рейтинг: 0 / 0
Ошибка при работе триггера на INSERT
    #39837771
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UncleFedor32как поступать если изменяемое поле не имеет отношение к датам?У каждого поля обычно есть (а по-хорошему - всегда должно быть) DEFAULT значение. Пользуйтесь...
...
Рейтинг: 0 / 0
Ошибка при работе триггера на INSERT
    #39838057
UncleFedor32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

К сожалению не нашел варианта при котором в default можно занести sql-запрос, а задача требует именно этого, т.к. изменяемое поле не обязательно календарного формата. Может быть и число и строка. Поменять нужно все позиции таблицы у которых id тот же, что и в вставляемой записи, которая обрабатывается триггером
...
Рейтинг: 0 / 0
Ошибка при работе триггера на INSERT
    #39838074
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит, составляйте INSERT INTO на основе этого запроса и литералов. Какие проблемы-то? на VALUES свет клином не сошёлся...
...
Рейтинг: 0 / 0
Ошибка при работе триггера на INSERT
    #39843619
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UncleFedor32,

Думаю это будет работать
INSERT INTO ON DUPLICATE KEY UPDATE
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ошибка при работе триггера на INSERT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]