Триггеры

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Как создать триггер, который бы обновлял данные в двух таблицах и возможно ли такое вообще?
Поясню, имеется таблица в ней обновляются поле A и B, также есть ещё две таблицы, в которых есть поля A и B (называются также). Нужно сделать так, чтобы при обновлении записи в таблице 1, данные изменялись и в таблицах 2 и 3.
Триггер на изменение одной таблицы сделал:


CREATE TRIGGER `upd_urov_rate` AFTER UPDATE ON `user`
FOR EACH ROW
UPDATE `tmp_user_rate`
SET `uroven` = NEW.`uroven`
WHERE `id_login` = OLD.`id`

А вот как вторую таблицу сделать - не догоняю(( Хэлп ми..
 

mrlasking

$_GET['rich'] or die('trying');
Регистрация
22.05.2012
Сообщения
323
Код:
CREATE TRIGGER `upd_urov_rate` AFTER UPDATE ON `user`
    FOR EACH ROW BEGIN

        UPDATE `tmp_user_rate`
		SET `uroven` = NEW.`uroven`
		WHERE `id_login` = OLD.`id` 

        UPDATE `second_table`
		SET `uroven` = NEW.`uroven`
		WHERE `id_login` = OLD.`id`
    END;
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
mrlasking сказал(а):
CREATE TRIGGER `upd_urov_rate` AFTER UPDATE ON `user`
FOR EACH ROW BEGIN

UPDATE `tmp_user_rate`
SET `uroven` = NEW.`uroven`
WHERE `id_login` = OLD.`id`

UPDATE `second_table`
SET `uroven` = NEW.`uroven`
WHERE `id_login` = OLD.`id`
END;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
 

mrlasking

$_GET['rich'] or die('trying');
Регистрация
22.05.2012
Сообщения
323
Дык поиграйся с кавычками и прочим синтаксисом. Кстати, текст ошибки ты не полностью привел - не понятно, на что именно ругается мускуль.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
mrlasking сказал(а):
Дык поиграйся с кавычками и прочим синтаксисом. Кстати, текст ошибки ты не полностью привел - не понятно, на что именно ругается мускуль.
CREATE TRIGGER `upd_urov_rate` AFTER UPDATE ON `user`
FOR EACH ROW BEGIN

UPDATE `tmp_user_rate`
SET `uroven` = NEW.`uroven`
WHERE `id_login` = OLD.`id`

UPDATE `statistic`
SET `uroven` = NEW.`uroven`
WHERE `id_login` = OLD.`id`

END;


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE `statistic` SET `uroven` = NEW.`uroven` WHERE `id_login` = OLD.`id`' at line 8

Полагаю, он говорит, что второй запрос тут лишний)
 

mrlasking

$_GET['rich'] or die('trying');
Регистрация
22.05.2012
Сообщения
323
Эм, я забыл тебе написать ";" в конце апдейтов) Это ж отдельные запросы. Попробуй с ";".
Код:
CREATE TRIGGER `upd_urov_rate` AFTER UPDATE ON `user`
    FOR EACH ROW BEGIN
 
        UPDATE `tmp_user_rate`
		SET `uroven` = NEW.`uroven`
		WHERE `id_login` = OLD.`id`;

        UPDATE `statistic`
		SET `uroven` = NEW.`uroven`
		WHERE `id_login` = OLD.`id`;

    END;
 

CamaroSS

Well-Known Member
Регистрация
21.02.2012
Сообщения
176
А внешний ключ с каскадным обновлением не канает?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ