2012-05-02 13 views
1

私はビューを使用して、従来のデータベースから新しいデータベースへの移行をゆっくりと進めています。たとえば、新しいデータベースに再実装しているクライアントテーブルがレガシーデータベースにあります(両方のデータベースが同じサーバー上にあります)。クライアントテーブルを元のテーブルと同じシグネチャを持つレガシーデータベースのクライアントビューに置き換える予定です。変数に基づく動的ビュー

新しいアプリケーションがRailsで開発されていることを除いて、私の考えはうまくいくはずです。環境によっては、データベース名がdb_test、db_development、db_productionのいずれかになる可能性があります。

新しいデータベース名が変更されたときに、新しいデータベース内のテーブルを指すビューをレガシーデータベースに作成する方法を教えてください。私はいくつかのことを試しましたが、それはかなり奇妙な問題なので、どこから始めるべきかは本当にわかりません。

これは私が行うことができるようにしたいものの例である:誰もが正しい方向に私を指すことができる場合

SET @db = 'db_development'; 
select * from @db.client; 

、それをいただければ幸いです。ありがとうございました。

+0

「環境に依存する」と言うと、「Rubyのプログラム状態に応じて」という意味ですか?その場合、確実にデータベースを選択することができます(MySQLへの接続など)。 – eggyal

+0

新しいRailsアプリは、式の一部にすぎません。レガシーデータベースは、レガシーアプリケーションがしばらくの間、Railsアプリケーションと連携して機能する必要があるため、新しいRailsデータベースを参照するビューを持ちます。これらのビューが指すデータベースは、Rails環境とともに変更する必要があります。 – kstevens715

+0

私はシンボリックリンクの使用を検討しましたが、これはMyIASMテーブルでのみ機能します。私はMySQL Proxyを使用して見ましたが、この状況では複雑すぎます。変数を使って調べましたが、これはビュー内では機能しないプリペアドステートメントでのみ機能します。私がしようとしているのは、sql.erbファイルを処理できる別の宝石を作ることです。次に、 'rake db:switch development'のようなものを実行して、別のdbを指すようにビューを再作成させることができます。 – kstevens715

答えて

1

トリガーを両方のデータベースで定義して、それらを同期させておくことができます。

関連する問題