2012-04-30 66 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が小さなデータベースの '3'の既存の値と異なる場合、 'three'が行内の唯一の更新された値です。どうやってするか?

EDIT: 次のコードでエラーが発生します。私の構文が間違っていますか?

$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

私はあなたがこれを行うことができる2つの方法を考えることができます:小さなデータベースを管理するソフトウェアを警告し、「ビッグ」のデータベースを変更する

  1. ソフトウェア、およびその後の管理ソフトウェアの変更適切なフィールド。

  2. 私は2つのデータベース間でビューを作成することはできますが、そのようなことは一度もありませんが、それは可能ではありませんが、2つ(またはそれ以上)のデータベース間で外部キーを作ることはできません。

1

、両方のデータベースが同じ物理ハードウェア上でホストされている場合は、「小さな」データベース内の値を更新してしまうあなたの「大きな」、データベース内の複数のテーブルの一つにUPDATEトリガーの実装を検討することをお勧めします。ここで

は、MySQLでトリガーを使用しての簡単な概要と記事です: http://www.roseindia.net/mysql/mysql5/triggers.shtml

関連する問題