2011-12-23 69 views
0

是否允許在事務中使用CREATE TABLE tbl_name等sql語句。InnoDb與創建語句的交易

例如:

begin; 

CREATE TABLE .......; 

sdfghjk; 

rollback; 

表仍儘管在交易聲明中失敗,並在最後一個回退創建。如果事務中的語句失敗,是否有辦法防止創建表?

回答

1

在交易中允許DDL語句,但通常不受交易的影響。從MySQL文檔可以回滾和不回滾的內容:

某些語句無法回滾。通常,這些包括數據 定義語言(DDL)語句,例如創建或刪除數據庫的那些語句,創建,刪除或更改表或存儲的例程的那些語句。

你應該設計你的交易不包括這些陳述。如果 您在一個事務中提前發出聲明,而該事務不能再滾回 ,並且之後又有另一個聲明失敗,則在這種情況下,通過發出ROLLBACK 語句無法回滾事務的全部效果。

Source