Перейти к содержимому

Фотография
- - - - -

Триггеры


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 6

#1 FiRеFоX

FiRеFоX

    Завсегдатай

    Топикстартер
  • V.I.P.
  • 43
    739 сообщ.

Отправлено 05 Май 2014 в 13:56

Как создать триггер, который бы обновлял данные в двух таблицах и возможно ли такое вообще?

Поясню, имеется таблица в ней обновляются поле 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`

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


  • 0

Спонсор

#2 mrlasking

mrlasking

    $_GET['rich'] or die('trying');

  • Участник
  • 161
    323 сообщ.

Отправлено 06 Май 2014 в 23:41

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;

  • 1

#3 FiRеFоX

FiRеFоX

    Завсегдатай

    Топикстартер
  • V.I.P.
  • 43
    739 сообщ.

Отправлено 07 Май 2014 в 10:08

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


  • 0

#4 mrlasking

mrlasking

    $_GET['rich'] or die('trying');

  • Участник
  • 161
    323 сообщ.

Отправлено 07 Май 2014 в 22:49

Дык поиграйся с кавычками и прочим синтаксисом. Кстати, текст ошибки ты не полностью привел - не понятно, на что именно ругается мускуль.


  • 0

#5 FiRеFоX

FiRеFоX

    Завсегдатай

    Топикстартер
  • V.I.P.
  • 43
    739 сообщ.

Отправлено 08 Май 2014 в 04:30

Дык поиграйся с кавычками и прочим синтаксисом. Кстати, текст ошибки ты не полностью привел - не понятно, на что именно ругается мускуль.

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

 

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


  • 0

#6 mrlasking

mrlasking

    $_GET['rich'] or die('trying');

  • Участник
  • 161
    323 сообщ.

Отправлено 08 Май 2014 в 12:40

Эм, я забыл тебе написать ";" в конце апдейтов) Это ж отдельные запросы. Попробуй с ";".

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;

  • 0

#7 CamaroSS

CamaroSS

    Частый гость

  • Участник
  • 52
    176 сообщ.

Отправлено 08 Май 2014 в 15:53

А внешний ключ с каскадным обновлением не канает?


  • 0


Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей