2012-04-30 43 views
0

我有一个很大的MySQL数据库,我将重要的数据提取到一个更小的MySQL数据库中。大数据库中的值不断变化。较小的数据库也应该动态变化。只有当值更改时才使用PHP更新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'"; 
+0

我有过大的数据库无法控制,所以我不能更新在同一个进程数据库较小。我所说的这个更新应该是作为一个cron作业运行的,所以它会在后台完成。我只是寻找正确的代码来更新较小的数据库,而不是只填充它,如果它是空的。像INSERT ON DUPLICATE KEY UPDATE之类的东西。 –

回答

0

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

  1. 改变“大”数据库,提醒管理的小型数据库软件,然后将软件变更管理软件适当的领域。

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