我試着在MyISAM表上啓動事務,它回答「查詢OK,0行受影響(0.00秒)」。在MyISAM表中執行START TRANSACTION時是否會拋出任何錯誤?
但我不確定是否所有版本的MySQL都會發生同樣的情況。
是否有涉及在事務中的那些查詢的非事務模式下的行爲的規範?
我試着在MyISAM表上啓動事務,它回答「查詢OK,0行受影響(0.00秒)」。在MyISAM表中執行START TRANSACTION時是否會拋出任何錯誤?
但我不確定是否所有版本的MySQL都會發生同樣的情況。
是否有涉及在事務中的那些查詢的非事務模式下的行爲的規範?
不,不會出現錯誤或警告。當你開始一個交易時,你會爲所有可用的交易引擎執行此操作,而不是針對任何特定的表。
您可以使用一個事務中事務性和非事務性引擎的表運行查詢,當然只能在tableswith事務引擎執行的變更將需要提交/回滾。
使用非事務引擎執行的查詢將像往常一樣立即生效。
Thx!你的回答是清楚而準確的。 – Determinant
不客氣! – Mchl
@ymfoi,在這裏看到更多的細節:http://dev.mysql.com/doc/refman/5.6/en/ansi-diff-transactions.html ...基本上,當你執行查詢(內部和外部的事務)在沒有事務支持的表上,他們在auto_commit = 1模式下工作... –
你是怎麼做到的?請顯示SQL - –
只需執行查詢「START TRANSACTION;」 – Determinant
@ymfoi嗯,當你這樣做的時候(即START TRANSACTION),你沒有指定任何表,所以它將一直工作,即使你在數據庫中只有MyISAM表正在使用。 –