- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个示例代码,它创建一个表,在其中插入一些行,然后尝试取消整个事务,但是 conn.rollback()
似乎只对 INSERT 语句有效,而CREATE TABLE 保持不受影响:新创建的表在数据库中保持永久不变,其中没有插入任何行。
这是将 JDBC 驱动程序与 MySQL DBMS 一起使用时的标准行为吗?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestBatch {
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC",
"root", "root")) {
// drop table
try (Statement dropStatement = conn.createStatement()) {
dropStatement.executeUpdate("DROP TABLE IF EXISTS mytable");
}
// create table, insert rows and rollback
conn.setAutoCommit(false);
try (Statement stmt = conn.createStatement()) {
stmt.addBatch("CREATE TABLE mytable (id INT)");
stmt.addBatch("INSERT INTO mytable VALUES (1)");
stmt.addBatch("INSERT INTO mytable VALUES (2)");
stmt.executeBatch();
conn.rollback();
} finally {
conn.setAutoCommit(true);
}
} catch (SQLException e) {
System.err.println(e.getMessage());
}
}
}
请注意,我使用的是带有 Connector/J 版本的 MySQL Server 8.0。 8.0.17,参数 default-storage-engine(在 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 中)也设置为 INNODB。 p>
最佳答案
正如 Paul Spiegel 和 Arnaud 所说,DDL 语句不能在 MySQL 中回滚。即使对于 MySQL 8 也是如此:https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html
无论好坏,DDL 语句都会提交任何挂起的事务,如果它们是本地的并且不能在 XA 事务中使用(因为这会导致一个参与者在事务协调器没有发出这样做的命令的情况下提交数据)。
关于java - 如何在使用 JDBC 驱动程序和 MySQL DBMS 时回滚 CREATE TABLE 和 DROP TABLE 等 DDL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57553011/
是否有一个java库能够将数据库从任何DBMS(Mysql,SQLServer,Oracle,SQLite,...)导出到任何DBMS? 最佳答案 这并不容易..但您可以尝试使用 apache tor
我正在寻找令人满意的选项来对我的 .NET DAL 类进行单元测试;由于它们是 DAL 类,因此它们直接使用 ADO.NET 访问数据库。目前,我使用 MSSQL 数据库的实例进行测试,但想知道有哪些
假设我有以下关系(表): 学生(身份证、姓名、家庭) 类(class)(id、标题、单位、引用) Std-Course (std-id, course-id)//std-id 和 course-id
假设我有一个表 Table1,其中包含属性 id、姓名、地址、薪水。现在,我编写以下查询: SELECT * FROM Table1 WHERE 2*Salary > (SELECT MAX(Sala
我们正在为场馆开发支付系统。现在我们正在考虑为我们的应用程序使用什么 DBMS。目前我们正在使用微软的 sql express 来存储我们的数据。但是因为该系统将在非常繁忙的场所使用,我们认为我们需要
接受这个查询: SELECT * FROM MyTable WHERE MyColumn = 'SomeValue' ORDER BY SomeFakeQualifier.MyCol
我需要一个 DBMS,但不知道该选择哪个。基本上,应用程序进行许多 INSERT/UPDATE,但也进行许多 SELECT。 SELECT 大多非常简单,只有一个字段。 我目前正在使用 MySQL +
这里有人可以澄清“DBMS”和“数据库服务器”之间的区别吗?还有,'MySQL'是数据库查询语言的名称还是DBMS的名称? 最佳答案 DBMS 代表数据库管理系统(参见维基百科 http://en.w
我们知道: A schedule in which transactions are aligned in such a way that one transaction is executed fi
我刚刚阅读了 DBMS 中 3NF 的定义,它指出: 函数依赖 X --> A 是允许的,如果:1. X 是 super 键。2. A 是某个键的一部分。 我有两个疑问: a:我不明白第二个条件对消除
几年来,我一直沉浸在 MsSql/MySql 的世界里,我决定再展翅飞翔。目前,我正在研究哪种 DBMS 擅长归档数据时所需的事情。例如。大量写入和低读取。 我已经看到了 NoSQL 运动,但我有一个
好的..我已经对此进行了研究,但我对此研究得越多,我就越感到困惑。所以想到在这里发帖。 DBMS 提供数据库服务器功能 DBMS 有一个服务器组件和一个客户端组件 DBMS = 数据库服务器软件 DB
如果我们使用外部过程,我可以用其他语言执行一些代码,我想使用一些数值方法库来做一些矩阵计算并将结果存储在 SQL、Oracle 或任何 DBMS 中,这可能吗? 也许在 SQL 中有一个表,并告诉外部
Augmentation功能依赖性中的规则指出 当 X -> Y 时, 然后是 XZ->YZ。 有人可以举一个真实世界的例子吗? 最佳答案 如果 X 是客户 ID,Y 是客户姓名,Z 是出生日期,则:
我想知道哪些 DBMS 在其查询计划/执行中实际使用了多线程? 最佳答案 Oracle 支持这一点,SQL Server 和 DB2 也是如此。不过,我不认为 MySQL 或 PostgeSQL 支持
数据库管理系统(尤其是MySQL)对表的最大行数有限制吗? 我想创建用于保存日志文件的表,它的行数增加得如此之快,我想知道我应该怎么做才能防止出现任何问题。 最佳答案 我认为没有官方限制,这将取决于最
因此,我正在努力思考整个“规范化”的问题。为了更好地理解它,我想出了一个存储歌曲的案例 假设我有以下数据库: 专辑表: album_name| genre album_1|
DBMS 中的空值代表什么? 是未赋值还是不适用还是零还是空格? 最佳答案 Null 是 SQL 中用来表示数据库中不存在数据值的特殊标记。由关系数据库模型的创建者 E. F. Codd 引入,SQL
DBMS 如何利用撤消缓冲区和重做日志文件来恢复对数据库所做的更改? 最佳答案 例如在 Oracle 上,重做日志文件记录由于事务和内部 Oracle 服务器操作而对数据库所做的更改。并且这些文件保护
是否有任何开源分层数据库或现有 RDBMS 之上的仿真? 我正在搜索一个 DMBS(或现有 RDBMS 的插件),它可以存储分层数据并允许对分层数据执行查询(类似于“SELECT LEVEL ...
我是一名优秀的程序员,十分优秀!