Забыли пароль?
Запросите новый здесь.

Автор темы: Serge Renard
ID темы: 1728
Информация:
Тема содержит 8 сообщения, была просмотрена 2117 раз.
Просмотр темы
PHP-Fusion Russia » Веб-разработка » MySQL
 Распечатать тему
Триггеры
Serge Renard
Имеем две таблицы, которые должны синхронизироваться при изменении любой из них, назовём их А и В. На каждую из них вешается триггер AFTER UPDATE. И тут-то возникает ожидаемый косяк - меняем запись в А, триггер меняет запись в В, после чего пытается сработать триггер уже в самой В, что и вызывает ошибку. Впрочем, сами данные при этом синхронизируются нормально, хотя ситуация явно нештатная. Побороть это можно как-то или можно просто забить, уж коль оно работает?

Upd: при этом любопытно, что на форуме выдаёт надпись прямо на странице «Can't update table 'sr_f_users' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. », а на сайте такой надписи не появляется. Хотя ошибка, естественно, возникает и там, и там.

Upd: решено с использованием переменных MySQL.

Upd: и всё-таки не до конца решено, что-то странное творится. Когда меняю ручками записи с помощью PHPMyAdmin - они исправно апдейтятся в обе стороны (меняю в А - меняется в В, меняю в В - меняется в А, никаких ошибок не возникает). А вот уже непосредственно на сайте творится какая-то катавасия. Меняю профиль на сайте - он автоматом меняется на форуме, как и должно быть. Меняю профиль на форуме - на сайте ничего не меняется! Как это объяснить?

Upd: не работает только триггер для UPDATE, для INSERT всё работает замечательно - юзер регается на сайте, запись появляется в двух таблицах, юзер регается на форуме - то же самое. Блин, из фьюжена как-то по-особому UPDATE таблиц, что ли, идёт?
Изменил(а) Serge Renard, 17.08.2013 16:33
В Интернете кто-то неправ!
 
Web
Serge Renard
Напишу отдельным постом, потому что практически стало ясно, что происходит. Видимо, у фьюжена какая-то отложенная запись в БД или что-то типа этого.
Т.е. что происходит - открываю фьюженовский профиль, что-то меняю, нажимаю «Обновление профиля» - информация в таблице сайта НЕ меняется, в таблице фьюжена изменения, как и положено, есть. Теперь перехожу по любой другой ссылке или даже просто ещё раз жму на ссылку "Редактировать профиль" - и вот только после этого меняется информация в другой таблице. Расскажите плиз простым языком, что тут происходит.

P.S. Как я теперь понимаю, проблема некритична - профили юзера всё равно синхронизируются, хоть и с запозданием, но очень уж хочется понять, что происходит.
В Интернете кто-то неправ!
 
Web
GMan1990
Да, у меня тоже есть такая проблемка на сайте, ввёл данные, нажал обновить, страница перезагрузилась, данные успешно сохранены, но параметры не считались, приходится по новой обновлять и смотреть долгожданный результат.
Но чую, где-то закралась ошибка
Изменил(а) GMan1990, 17.08.2013 20:30
Человек
 
Web
Serge Renard
РАБОТАЕТ! bp
В Интернете кто-то неправ!
 
Web
Polarfox
GMan1990, первый раз массив данных текущего пользователя это старые данные.
После обновления - берутся новые.

Логика


никаких записей отложенных нет. все запросы обычные.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Serge Renard
Ага, я уже потом понял, что запроса два подряд идёт, а триггер косячный был и отрабатывал только самый первый запрос. Но сейчас всё побеждено и работает.
В Интернете кто-то неправ!
 
Web
Polarfox
первый запрос стандартный SELECT, второй UPDATE.
два, но разных.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Serge Renard
Хм, не очень понятно тогда. Но. Если, будучи на странице редактирования профиля, ещё раз нажать ссылку «Редактирование профиля» - стопудово там будет UPDATE. Сей факт отслеживался по возникновению ошибки в БД, которая именно в момент апдейта и возникала.
В Интернете кто-то неправ!
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Топ 5 пользователей форума
Alex Alex (1,171)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)