2011-04-15 16 views
5

Web sitesi için bir modül oluşturmam istendi, bu da bağımsız bir web sitesi olarak kullanılacak. Bu durumda, ayrı bir veritabanı kullanmak istedim ve bir veritabanında bir tabloya sahip olmanın bir yolu olup olmadığını merak ettim, başka bir veritabanında bir "işaretçi" olsun.Başka bir veritabanında bir tabloyu kullanma

Mesela ben veritabanları db1 ve

db1 tablo kullanıcıya sahip db2 var, bu yüzden db2.users db1.users işaret olmasını istiyorum.

Ben kurulum tetikleyiciler olabilir biliyorum ve bu sesler hangi iki ayrı tablo senkronize etmek değil ama soğutucu :)

DÜZENLEME Yani benim kodda ben

select * from users 
gibi sql kullanıyorum

Şimdi, veritabanı düzeyinde, "kullanıcıların" aslında db1.users olmasını isterim. Sonra, eğer istersem, takma adı/işaretçiyi kaldırabilirim ve "kullanıcılardan * seç" ifadesi mevcut veritabanındaki kullanıcı tablosunu gösterecektir. Sanırım aradığım şey "küresel takma ad" türünden bir şey.

+0

Ne sorduğunuzu tam olarak anlamadım, biraz daha spesifik olabilir misiniz? – Khez

+0

Daha iyi açıklamaya çalıştım (soruya bakın) –

+0

Sadece "mysql_select_db ('db2');/* sorguları */mysql_select_db ('db1'); '? – Khez

cevap

4

federated storage engine İstediğin özelliğine benzer bir şey sunuyor. Veritabanlarınız aynı veritabanı sunucusundaysa, birleşik depolama ortamı benim için bir overkill gibi geliyor. Bunun yerine create a view'u isteyebilirsiniz.

Her iki yöntem db1 yoksa kullanılabilir. Emmerman'ın işaret ettiği gibi, eğer mevcut değilken db1 durumu için hazırlanmak istiyorsanız, verileri db2'de saklamanız gerekir.

+0

Sanırım benim amacımı özlüyorsun. Modülden aktarımın tek başına kalması için sadece bir satır kodun veritabanı seviyesinde değiştirilmesini istiyorum. Yani "kullanıcılardan * seç" yaptığımda, takma adı kaldırabilir ve db2'de "Kullanıcılar" adlı bir tablo oluşturabilirim –

+0

Cevabı düzenlediniz mi? Aradığım şeyi bulabildiğim en yakın yöntem bu yüzden teşekkürler :) –

6

Sadece doğrudan başka bir veritabanından kullanın?

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

Modül tek başına bir web sitesi haline geldiğinde, db1 mutlaka mevcut olmayabilir, bu nedenle bu yöntemden kaçınmayı tercih ederim –

+0

O zaman bu tablonun bir kopyasına ihtiyacınız var, bir 'işaretçi' (ne anlama geliyorsa). – Emmerman

+0

Evet, ancak uygulamadaki her bir sql ifadesini değiştirmek zorunda kalmak istemiyorum. Yani seç ... kullanıcılardan db düzeyinde db1.users veritabanına kullanıcı tablosuna değiştirilir. –

İlgili konular