2016-05-13 56 views
1

我有一個頻繁更改原始數據的數據庫。 有一個非常複雜的過程,可以創建此數據的彙總表。截斷,然後在一個事務中插入MySQL

我創建了一個存儲過程來創建這個表,它使用三個表的序列。由於我還沒有跟蹤什麼數據已被更新(我正在說)我只是填充這些查詢的序列:我已經感動了所有這三種查詢到一個單一的交易

TRUNCATE tablename ... 
INSERT INTO tablename ... 

START TRANSACTION READ WRITE; 

    [Sequence of TRUNCATE/INSERT queries] 

COMMIT; 

我預計在提交後,我會立即看到結果表,但似乎有一個2-3秒的時間,其中表是空的。有沒有簡單的方法來解決這個問題?

+0

您看到此延遲的上下文是什麼? –

回答

2

不!! , 您無法在交易中使用TRUNCATE截斷刪除洞表文件重新創建它。 截斷操作會導致隱式提交。

一個想法:

它可以與RENAME工作。重命名是單筆交易

CREATE TABLE table_copy like your_table; 
INSERT DATA in table_copy; 
RENAME your_table TO your_table_old, table_copy TO your_table; 
DROP table_copy; 
+0

@Hans - 我已經添加了一些東西 –

+0

啊好的沒有意義的是,如果問題與其中使用的命令一致,那麼我就不會閱讀和重新閱讀交易。謝謝你解決它。 – Hans

+0

事實上,它會不會更好,只是刪除所有行? – Hans

相關問題