仅在值更改时才使用PHP更新MySQL数据库

时间:2012-04-30 22:01:13

标签: php mysql sql-update insert-update

我有一个很大的MySQL数据库,我正在将重要的位提取到一个较小的MySQL数据库中。大数据库中的值不断变化。较小的数据库也应该动态变化。

我可以使用以下代码填充较小的数据库:

$SQL_INSERT="INSERT LOW_PRIORITY IGNORE INTO oddsnavi_baby.calc (one , two, three)
VALUES ('$one', '$two' , '$three')";

mysql_db_query($database_baby, $SQL_INSERT) or die("Failed Query of " . $SQL_INSERT);

我希望更改的值更新。例如,如果$ 3与小数据库中'three'中的现有值不同,那么'three'是该行中唯一更新的值。怎么做?

编辑: 我收到以下代码的错误。我的语法出了什么问题?

$SQL_INSERT="INSERT LOW_PRIORITY IGNORE INTO oddsnavi_baby.calc (one , two, three)
VALUES ('$one', '$two' , '$three')
ON DUPLICATE KEY UPDATE oddsnavi_baby.calc SET two = '$two' , three = '$three'
WHERE one = '$one'";

2 个答案:

答案 0 :(得分:1)

如果两个数据库都托管在同一物理硬件上,您可能需要考虑在“大”数据库中的一个或多个表上实现UPDATE触发器,这将更新“小”数据库中的值。

这篇文章简要概述了在MySQL中使用触发器: http://www.roseindia.net/mysql/mysql5/triggers.shtml

答案 1 :(得分:0)

我可以想到两种方法可以做到这一点:

  1. 更改“大”数据库的软件,提醒管理小型数据库的软件,然后管理软件更改相应的字段。

  2. 我认为你可以在两个数据库之间创建一个视图,但从来没有做过类似的事情,即使它可能也不知道,但为什么不呢,你可以在两个(或更多)数据库之间创建外键。 / p>