是否允许在事务中使用CREATE TABLE tbl_name
等sql语句。InnoDb与创建语句的交易
例如:
begin;
CREATE TABLE .......;
sdfghjk;
rollback;
表仍尽管在交易声明中失败,并在最后一个回退创建。如果事务中的语句失败,是否有办法防止创建表?
是否允许在事务中使用CREATE TABLE tbl_name
等sql语句。InnoDb与创建语句的交易
例如:
begin;
CREATE TABLE .......;
sdfghjk;
rollback;
表仍尽管在交易声明中失败,并在最后一个回退创建。如果事务中的语句失败,是否有办法防止创建表?
在交易中允许DDL语句,但通常不受交易的影响。从MySQL文档可以回滚和不回滚的内容:
某些语句无法回滚。通常,这些包括数据 定义语言(DDL)语句,例如创建或删除数据库的那些语句,创建,删除或更改表或存储的例程的那些语句。
你应该设计你的交易不包括这些陈述。如果 您在一个事务中提前发出声明,而该事务不能再滚回 ,并且之后又有另一个声明失败,则在这种情况下,通过发出ROLLBACK 语句无法回滚事务的全部效果。
如果您仍然需要使用表,你可以做create temporary table....
。它不会提交事务,但会在连接关闭时被删除。