2011-12-23 72 views
0

是否允许在事务中使用CREATE TABLE tbl_name等sql语句。InnoDb与创建语句的交易

例如:

begin; 

CREATE TABLE .......; 

sdfghjk; 

rollback; 

表仍尽管在交易声明中失败,并在最后一个回退创建。如果事务中的语句失败,是否有办法防止创建表?

回答

1

在交易中允许DDL语句,但通常不受交易的影响。从MySQL文档可以回滚和不回滚的内容:

某些语句无法回滚。通常,这些包括数据 定义语言(DDL)语句,例如创建或删除数据库的那些语句,创建,删除或更改表或存储的例程的那些语句。

你应该设计你的交易不包括这些陈述。如果 您在一个事务中提前发出声明,而该事务不能再滚回 ,并且之后又有另一个声明失败,则在这种情况下,通过发出ROLLBACK 语句无法回滚事务的全部效果。

Source