Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Triger insert => delete / 8 сообщений из 8, страница 1 из 1
14.04.2014, 16:45:17
    #38614460
chiffacff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
Всем добрый день. Есть 2 таблички Table_1 и Table_1_jn (архивная)

На Table_1 весит тригер который при апдейте поля переносит запись в архив (After Update):

Код: sql
1.
2.
3.
4.
5.
6.
7.
IF OLD.timestop != NEW.timestop then

INSERT INTO `Table_1_jn` SET `user_id` = OLD.user_id, `timestop` = NEW.timestop;

INSERT INTO tmp SET `uid` = OLD.id;

END IF



и на второй таблице висит Table_1_jn висит тригер AFTER INSERT:

Код: sql
1.
DELETE FROM `Table_1` WHERE id in (SELECT uid FROM `tmp`)



при этом при обновлении поля в Table_1.timestop получаю ошибку:


Ошибка

SQL-запрос: Изменить Изменить

UPDATE `imed_gps`.`stop_pass` SET `timestop` = '113' WHERE `stop_pass`.`id` =1

#1442 - Can't update table 'Table_1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

при удалении триггера из Table_1_jn данные обновляются и добавляются в Table_1_jn.

Подскажите как корректно реализовать выше-описанную задачу? Заранее всем спасибо!
...
Рейтинг: 0 / 0
14.04.2014, 17:03:55
    #38614493
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
chiffacff,

мдя, тригеры циклически вызывать это не круто :)
тыб задачу описал, а решение влоб, хранимка. через неё делать.
...
Рейтинг: 0 / 0
14.04.2014, 17:13:42
    #38614507
chiffacff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
alex564657498765453,
так задача проста... Если запись не нужна в таблице - перенесли в архив - после переноса удалили из главной таблицы

а что именно через хранимые? апдей? удаление? или и то и другое? :)
...
Рейтинг: 0 / 0
14.04.2014, 17:27:17
    #38614533
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
chiffacff,

понимаешь в чом дело.

начало процедуры апдейта
тригер апдейт бифоре
апдейт
тригер апдейт афтер
окончение апдейта

это всё одна транкзанкция.
и ты пытаешься удалять запись, которая вообщето должна быть залочена на любые изменения.

хранимка: получает айди и таймстоп;
Делает,
-выбор таймстоп текущий
-принимаеться решение что делать
делаеться .
...
Рейтинг: 0 / 0
14.04.2014, 17:41:54
    #38614554
chiffacff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
alex564657498765453,

понял :) огромное пасиба за разъяснения!!! :)
...
Рейтинг: 0 / 0
15.04.2014, 13:29:44
    #38615254
chiffacff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
Видимо не все понял... Процедура которая раньше инсертит в Table_1_jn удаляет из Table_1 тоже не отрабатывает. ВЫзываю ее тригером на Table_1 при апдейте поля...
...
Рейтинг: 0 / 0
15.04.2014, 15:58:33
    #38615535
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
chiffacffВЫзываю ее тригером на Table_1 при апдейте поля...
Не вызывай её триггером. Вызывай напрямую.
...
Рейтинг: 0 / 0
15.04.2014, 17:05:03
    #38615681
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triger insert => delete
chiffacff,

да..я немного двусмыслено описал.

всё делать через хранимку, без тригеров.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Triger insert => delete / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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