2011-04-15 33 views
5

我被要求爲Web應用程序構建模塊,該模塊也將用作獨立網站。既然如此,我想使用一個單獨的數據庫,並想知道是否有辦法在一個數據庫中創建一個表,成爲另一個數據庫中的「指針」。在另一個數據庫中使用表格

例如,我有數據庫DB1和DB2

DB1有表的用戶,所以我想有db2.users指向db1.users。

我知道我可以設置觸發器,什麼不能同步兩個不同的表,但聽起來冷卻器:)

編輯

所以在我的代碼,我使用的是SQL如

select * from users 

現在,在數據庫級別,我希望「用戶」實際上是db1.users。然後,如果我想,我可以刪除別名/指針,「select * from users」將指向當前數據庫中的用戶表。我想我正在尋找的是一種「全球別名」類型的東西。

+0

我不完全明白你在問什麼,你能更具體一點嗎? – Khez 2011-04-15 09:13:59

+0

我試着解釋更好(查看問題) – 2011-04-15 09:49:00

+0

你不能只是'mysql_select_db('db2');/*查詢*/mysql_select_db('db1');'? – Khez 2011-04-15 10:04:26

回答

4

federated storage engine提供了類似於您要求的功能。 而且如果你的數據庫在同一個數據庫服務器上,聯邦存儲系統對我來說聽起來有點像過火。您可以改爲create a view

如果db1不可用,這兩種方法都不會有用。正如Emmerman已經指出的那樣,如果要準備db1不可用的情況,則需要將數據存儲在db2中。

+0

我想你很想念我的觀點。我希望能夠在數據庫級別更改一行代碼,以便從模塊單獨轉移。所以當我做「從用戶中選擇*」時,我可以刪除別名並在db2中創建一個名爲「users」的表格 – 2011-04-15 09:36:46

+0

認爲您編輯了答案?這是我能找到的最接近的方法,因爲我非常感謝:) – 2011-04-22 09:55:44

6

只需從其他數據庫直接使用它?

SELECT ... FROM `db1`.`users` LEFT JOIN `db2`.`something` 
+0

當模塊成爲獨立網站時,db1可能不一定可用,因此我寧願避免使用此方法。 – 2011-04-15 09:18:09

+0

然後,您需要該表的副本,而不是「指針」(不管它是什麼意思)。 – Emmerman 2011-04-15 09:19:33

+0

是的,但我不想更改應用程序中的每個sql語句。因此, select ... from用戶在db級別從db1.users更改爲數據庫內的users表。 – 2011-04-15 09:38:14

相關問題