2013-11-01 86 views
1

我對MySQL InnoDB引擎事務有一些快速的問題。我有一些數據庫,在這個格式(DB_1,db_2,db_3等)在一臺服務器上跨幾個InnoDB數據庫的MySQL事務

我想插入/更新任何類似如下的事務中的數據庫,

BEGIN 
USE DB_1; 
//Insert/Update into DB_1 tables 

USE DB_2; 
//Insert/Update into DB_2 tables 
COMMIT 

是否確定?或者我需要把獨立的交易詳情如下,每個數據庫,

BEGIN 
USE DB_1; 
//Insert/Update into DB_1 tables 
COMMIT 

BEGIN 
USE DB_2; 
//Insert/Update into DB_2 tables 
COMMIT 

是否有任何問題,在一個事務中切換多個數據庫,如第一種方法。事務數據庫級別還是全局級別?

回答

2

這應該工作。顯然DB_1DB_2位於同一臺服務器上。如果他們將要使用不同的服務器,集羣就在您的未來! :-)

您可能會考慮限定表格的名稱,而不是使用USE語句。這可能會簡化你的邏輯。

例如,

BEGIN; 
    INSERT INTO DB_1.mytable (myid, mycol) VALUES (1,'a'); 
    INSERT INTO DB_2.histable (hisid, hiscol) VALUES (1,'b'); 
    SELECT whatever 
    FROM DB_1.mytable AS m 
    JOIN DB_2.histable AS h ON m.myid = h.hisid; 
    COMMIT; 
+0

對不起,我的延遲響應。正如你所說,在我的情況下,所有的數據庫都在同一臺服務器上。謝謝(你的)信息。 – Prabu

+1

@Prabu爲你工作了嗎?這是否真的是一個RDBMS與2個數據庫的交易? –

相關問題