在事务中是否允许使用CREATE TABLE tbl_name
等sql语句。
例如:
begin;
CREATE TABLE .......;
sdfghjk;
rollback;
尽管事务中的语句失败,并且最后还是回滚,仍然会创建表。如果事务中的语句失败,有没有办法阻止创建表?
答案 0 :(得分:1)
DDL语句在事务中是允许的,但通常不受事务的影响。从MySQL文档中可以和不可以回滚的内容:
某些语句无法回滚。通常,这些包括数据 定义语言(DDL)语句,例如那些创建或 drop database,创建,删除或更改表或存储的数据库 例程。
您应该将交易设计为不包含此类声明。如果 您在无法滚动的事务中提前发出语句 回来,然后另一个声明失败,完全的效果了 在这种情况下,通过发出ROLLBACK无法回滚事务 言。
答案 1 :(得分:1)
如果您仍然需要使用表格,则可以执行create temporary table....
。它不提交事务,但在关闭连接时将被删除。