Просмотр темы
Триггеры
|
|
Serge Renard |
Опубликовано 17.08.2013 14:51
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
Имеем две таблицы, которые должны синхронизироваться при изменении любой из них, назовём их А и В. На каждую из них вешается триггер 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 В Интернете кто-то неправ!
|
|
|
Serge Renard |
Опубликовано 17.08.2013 18:21
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
Напишу отдельным постом, потому что практически стало ясно, что происходит. Видимо, у фьюжена какая-то отложенная запись в БД или что-то типа этого. Т.е. что происходит - открываю фьюженовский профиль, что-то меняю, нажимаю «Обновление профиля» - информация в таблице сайта НЕ меняется, в таблице фьюжена изменения, как и положено, есть. Теперь перехожу по любой другой ссылке или даже просто ещё раз жму на ссылку "Редактировать профиль" - и вот только после этого меняется информация в другой таблице. Расскажите плиз простым языком, что тут происходит. P.S. Как я теперь понимаю, проблема некритична - профили юзера всё равно синхронизируются, хоть и с запозданием, но очень уж хочется понять, что происходит. В Интернете кто-то неправ!
|
|
|
GMan1990 |
Опубликовано 17.08.2013 19:34
|
Пользователь Сообщений: 52 Зарегистрирован: 18.04.2011 18:16 |
Да, у меня тоже есть такая проблемка на сайте, ввёл данные, нажал обновить, страница перезагрузилась, данные успешно сохранены, но параметры не считались, приходится по новой обновлять и смотреть долгожданный результат. Но чую, где-то закралась ошибка Изменил(а) GMan1990, 17.08.2013 20:30 Человек
|
|
|
Serge Renard |
Опубликовано 17.08.2013 20:57
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
РАБОТАЕТ!
В Интернете кто-то неправ!
|
|
|
Polarfox |
Опубликовано 19.08.2013 17:07
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
GMan1990, первый раз массив данных текущего пользователя это старые данные. После обновления - берутся новые. Логика никаких записей отложенных нет. все запросы обычные. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Serge Renard |
Опубликовано 19.08.2013 18:21
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
Ага, я уже потом понял, что запроса два подряд идёт, а триггер косячный был и отрабатывал только самый первый запрос. Но сейчас всё побеждено и работает.
В Интернете кто-то неправ!
|
|
|
Polarfox |
Опубликовано 19.08.2013 18:23
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
первый запрос стандартный SELECT, второй UPDATE. два, но разных. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Serge Renard |
Опубликовано 19.08.2013 19:54
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
Хм, не очень понятно тогда. Но. Если, будучи на странице редактирования профиля, ещё раз нажать ссылку «Редактирование профиля» - стопудово там будет UPDATE. Сей факт отслеживался по возникновению ошибки в БД, которая именно в момент апдейта и возникала.
В Интернете кто-то неправ!
|
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Перейти на форум: |