2012-04-30 77 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. 我認爲你可以在兩個數據庫之間創建一個視圖,但是從來沒有做過這樣的事情,即使它可能也不知道,但爲什麼不能,你可以在兩個(或更多)數據庫之間創建外鍵。