Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Изменение записей той же таблицы в триггере / 10 сообщений из 10, страница 1 из 1
16.05.2012, 21:23
    #37797836
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
Можно ли в триггерах изменять другие столбцы той же самой таблицы, помимо текущего?
При попытке выполнить запрос на изменение возникает ошибка:
Код: sql
1.
SQL Error (1442): Can't update table 'test' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.


Обновлять именно другие столбцы, с текущим сделать это не проблема.
P.S. Не спрашивайте зачем, просто академический интерес.
...
Рейтинг: 0 / 0
16.05.2012, 21:24
    #37797837
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
Опечатался, не столбцы, естесвтенно, а записи)
...
Рейтинг: 0 / 0
16.05.2012, 23:36
    #37797949
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
Нет. И это разумно - ведь запросто можно породить шторм...
...
Рейтинг: 0 / 0
17.05.2012, 00:34
    #37797996
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
А на мой взгляд разумнее было бы реализовать для триггеров опцию, запрещающую в триггере рекурсию (но только с запретом вызова своих же триггеров, а не чужих). Чтоб по дефолту нельзя было, но с опцией можно было, при этом беря ответственность за пропущенные из-за ошибок в проектировании триггеры.
...
Рейтинг: 0 / 0
17.05.2012, 09:04
    #37798178
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
Шогалберя ответственность за пропущенные из-за ошибок в проектировании триггеры.Ага.... и когда на твой сервер на хостинге встанет колом, потому что какой-то безответственный осёл разрешил рекурсию и поставил в неудобную позу свой сервер, прихватив заодно систему и соседей, ты, несомненно, будешь сильно рад.
...
Рейтинг: 0 / 0
17.05.2012, 09:55
    #37798250
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
AkinaШогалберя ответственность за пропущенные из-за ошибок в проектировании триггеры.Ага.... и когда на твой сервер на хостинге встанет колом, потому что какой-то безответственный осёл разрешил рекурсию и поставил в неудобную позу свой сервер, прихватив заодно систему и соседей, ты, несомненно, будешь сильно рад.
Например, на masterhost есть mysql 5, но прав на создание VIEW не дают именно из соображений производительности. Так же и тут можно было поступить
...
Рейтинг: 0 / 0
17.05.2012, 10:08
    #37798270
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
Дело не только в рекурсии и ресурсах (хотя и они тоже важны).
Дело еще в потенциальном нарушении логики того запроса, который первоначально вызвал срабатывание триггеров. Если триггер изменяет набор записей, которые должны быть изменены этим запросом, то результат будет непредсказуемым. А с учетом того, что этот запрос и триггер вполне могут писать разные люди, то в таблице вполне может возникнуть хаос.
...
Рейтинг: 0 / 0
17.05.2012, 10:13
    #37798281
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
AkinaАга.... и когда на твой сервер на хостинге встанет колом, потому что какой-то безответственный осёл разрешил рекурсию и поставил в неудобную позу свой сервер, прихватив заодно систему и соседей, ты, несомненно, будешь сильно рад.
Так я ж наоборот о запрете рекурсии говорю, а не о разрешении. Чтобы можно было обновить запись, не задействуя при этом триггеры (жертвой в этом случае может только целостность стать). А в неудобную позу можно легко поставить и без триггеров.
...
Рейтинг: 0 / 0
17.05.2012, 13:00
    #37798711
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение записей той же таблицы в триггере
ШогалТак я ж наоборот о запрете рекурсии говорю, а не о разрешении.Отсутствие лучше запрета.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
31.03.2016, 12:16
    #39204960
Изменение записей той же таблицы в триггере
шторм породить можно и в текущих условиях
достаточно использовать две таблицы с триггерами обновляющими друг друга
вижу два способа обхода этой ситуации:
теоретический:
таки да, запретить рекурсию

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


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