在数据库中触发应该更改不同数据库中的表中的值?

时间:2012-11-01 10:22:20

标签: php mysql

如何创建由数据库中的更改激活的触发器,该更改会更改不同数据库中的表中的值?

一个数据库包含具有登录信息的表(用户名,密码)。当用户登录时,将更新另一个数据库中的表中的值。

如何实现这一目标?

[编辑]

抱歉,是的,两个不同的数据库位于同一个数据库服务器上。

[更新]

我有mainDB.users表:

username | password | NumberLogins
---------|----------|--------------
         |          |

otherDB.history表:

username | points
---------|---------
         |

用户登录后如何增加相应的points

USE `mainDB`;

DROP TRIGGER IF EXISTS `updateUserInfo`;

DELIMITER ||

CREATE TRIGGER `updateUserInfo` 
    BEFORE UPDATE ON `users` 
    FOR EACH ROW

    BEGIN
        IF NEW.`NumberLogins`=5 THEN

            UPDATE `otherDB`.`history`
            SET `points` = `points` + 1,
            WHERE 
              `username`=NEW.`username`;

        END IF;

    END ||

我一直收到这个错误。

 #1442 - Can't update table 'history' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

1 个答案:

答案 0 :(得分:1)

我假设两个数据库都在同一台服务器上。

USE name_of_db_trigger_to_be_in;
delimiter ||
create trigger.......

   UPDATE other_db.other_table
   SET other_guys = 'hohoho';


end||