gpt4 book ai didi

mysql - DDL的自动提交

转载 作者:行者123 更新时间:2023-11-29 12:15:34 24 4
gpt4 key购买 nike

我读到“CREATE TABLE”和“DROP TABLE”语句是自动提交的。我试图了解他们在以下情况下的行为:

conn.setAutoCommit(false);
stmt = conn.createStatement("CREATE TABLE ...");

conn.commit();

在上述情况下,将 autoCommit 设置为 false 会对 CREATE TABLE 自动提交产生影响。如果 conn.setAutoCommit(false) 确实覆盖了 DDL 自动提交属性,那么整个要点是什么,因为默认情况下新连接处于自动提交模式。

我相信除了MySQL和旧版本的ORacle之外,大多数主要的RDBMS都允许DDL回滚。我的问题是,如果 MySQL 中不允许 DDL 回滚,那么将 DDL 操作的连接自动提交设置为 false 有何意义?

我非常感谢您的意见来澄清我的疑问。

最佳答案

执行 DDL 语句会导致“隐式提交”。但该语句必须被执行。

您给出的场景对我来说没有意义,createStatement 方法不接受字符串作为参数,是吗?

我们通常会看到

stmt = conn.createStatement();
stmt.execute("CREATE TABLE ... ");

如果您实际执行 DDL 语句,它会导致隐式提交,就好像您在运行 DDL 语句之前立即运行了 COMMIT; 语句一样。

但不要相信我的话,您自己尝试一下,并针对您运行的 MySQL 版本查阅 MySQL 引用手册的相应部分。

引用:https://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html

关于mysql - DDL的自动提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com