Как изменить значения в одной базе данных на основе изменений в другой базе данных?

У меня есть игровой сервер и игровой форум. У каждого свои базы данных. На игровом сервере есть база данных, в которой отслеживаются все игроки и их кредиты в магазине (для внутриигровых косметических предметов). Затем база данных форума, которая отслеживает пользователей, сообщения и так далее.

Моя цель здесь - вознаградить игроков, которые публикуют сообщения на форуме, наградив их внутриигровой валютой после каждого сообщения на форуме, которое они отправляют. Я пытаюсь улучшить участие в форуме с помощью этого метода.

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

Форум отслеживает пользователей по их регистрационному идентификатору. Игровой сервер отслеживает пользователей по идентификатору их учетной записи.

Спасибо за помощь!


person raimond    schedule 26.02.2013    source источник
comment
Какой тип базы данных вы используете? MySQL?   -  person am_    schedule 26.02.2013


Ответы (1)


Я предполагаю, что у вас нет доступа или вы не хотите добавлять код в свою установку форума, чтобы достичь этого, тогда решением может быть использование триггеров для MySQL. Вам нужно будет заменить правильные имена таблиц и т. Д., Поскольку вы не опубликовали структуру таблиц базы данных.

CREATE TRIGGER `CreditsSync` AFTER UPDATE ON `F`.Posts
FOR EACH ROW BEGIN
   UPDATE `U`.Users, `F`.Posts SET `U`.Users.credits = `F`.Posts.num WHERE `F`.Posts.userid = `U`.Users.id
END

Для триггеров требуется MySQL 5.5 или выше, см. https://dev.mysql.com/doc/refman/5.5/en/triggers.html для получения дополнительной информации.

EDIT - заметили, что вы хотели вставить в разные таблицы в разных базах данных, в приведенной выше базе данных SQL F = forum и U = user database - вам нужно заменить это на правильную ориентацию для вашего dbs и таблицы.

person am_    schedule 26.02.2013
comment
Здравствуйте, спасибо за вашу помощь. Я буду смотреть в него. И да, я готов модифицировать свой форум для достижения этого результата. Было бы лучше, если бы я попытался изменить форум или придерживаться того же пути, что и вы? - person raimond; 26.02.2013
comment
Это зависит от того, какая у вас версия MySQL, триггеры - отличный способ решить эту проблему, но если у вас нет этой версии, вам нужно добавить некоторый (PHP?) Код в установку вашего форума. Если вы нашли ответ полезным, вы можете принять его и / или проголосовать за него. - person am_; 26.02.2013