powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Создание триггера на апдейт записи в текущей таблице
6 сообщений из 6, страница 1 из 1
Создание триггера на апдейт записи в текущей таблице
    #39642008
Василий2k18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Возникла проблема, нужно было сделать триггер, на апдейт записи в конкретной таблице, у которой sims_id совпадает с sims_id новой записи (То есть когда добавляется новая запись с таким же sims_id, у старой записи должен поставиться date_end равный date_start новой записи).

Структура полей таблицы:

id

sims_id

status_id

date_start (Default: CURRENT_TIMESTAMP)

date_end

Код создания триггера:

DELIMITER //
CREATE TRIGGER sims_date_end
BEFORE INSERT ON SimsToStatus
FOR EACH ROW
BEGIN
UPDATE SimsToStatus
SET date_end = NEW.date_start
WHERE date_end is null
and status_id is not null
and sims_id = NEW.sims_id
order by id desc limit 1;
END;

При этом триггер теперь не дает добавлять новые записи и при попытке инсертить запись с sims_id, который уже есть в таблице - выдает:

[HY000][1442] Can't update table 'SimsToStatus' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Подскажите кто сталкивался, в чем тут проблема?
...
Рейтинг: 0 / 0
Создание триггера на апдейт записи в текущей таблице
    #39642022
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий2k18в чем тут проблема?Проблема именно в том, что и написано - нельзя в триггере менять данные в других записях таблицы, действие на которой вызывает срабатывание триггера. Потому что это потенциально может привести к зацикливанию обработки..

Выносите логику добавления/обновления в хранимую процедуру.
...
Рейтинг: 0 / 0
Создание триггера на апдейт записи в текущей таблице
    #39642029
Василий2k18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял вас. Спасибо большое что направили ход мыслей в верное русло!
...
Рейтинг: 0 / 0
Создание триггера на апдейт записи в текущей таблице
    #39642039
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий2k18 , лучше сначала вставляйте, потом проверяйте, что вставка выполнена, и только при положительном итоге проверки выполняйте обновление. Это я к тому, что Ваше изначальное TRIGGER BEFORE INSERT было ошибочным.
...
Рейтинг: 0 / 0
Создание триггера на апдейт записи в текущей таблице
    #39642062
Василий2k18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Понял, то есть нужно использовать After Insert?
...
Рейтинг: 0 / 0
Создание триггера на апдейт записи в текущей таблице
    #39642187
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да обновлять существующую запись надо только после удачной вставки новой.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Создание триггера на апдейт записи в текущей таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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