mysql - 为什么我的 VB 中的 MySQL 事务不起作用?
问题描述
早上好,如果我有一些我想要的问题,我需要一个交易原因,不要创建任何东西,方案,表什么都没有。但它总是写在我的数据库上,例如在我的代码中,我没有将名称字段放在插入中,但它创建了方案和表,所以之前的 2 个命令。我哪里错了?谢谢
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="MySql.Data" %>
<%@ Import Namespace="MySql.Data.MySqlClient" %>
<%RunTransaction("server=localhost;user id=root;password=xxx$;Database=ooo")%>
<script runat="server">
Public Sub RunTransaction(myConnString As String)
Dim myConnection As New MySqlConnection(myConnString)
myConnection.Open()
Dim myCommand As MySqlCommand = myConnection.CreateCommand()
Dim myTrans As MySqlTransaction
myTrans = myConnection.BeginTransaction()
myCommand.Connection = myConnection
myCommand.Transaction = myTrans
Try
myCommand.CommandText = "CREATE SCHEMA xxx DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs;"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "CREATE TABLE xxx.ITEMIMG (IDITE VARCHAR(36) NOT NULL, IDIMG VARCHAR(36) NOT NULL, IMG VARCHAR(255) NULL, COVER INT NULL, DATINS DATE NULL, PRIMARY KEY (IDITE, IDIMG))"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "INSERT INTO xxx.ITEMIMG (IDITE, , IMG, DATINS) VALUES ('maquillaje-1','maquillaje-1-img-1', '/maquillaje-1.jpg', NOW())"
myCommand.ExecuteNonQuery()
myTrans.Commit()
response.write("Both records are written to database.")
Catch e As Exception
myTrans.Rollback()
response.write("rollaback")
Finally
myConnection.Close()
response.write("chidi connessione")
End Try
End Sub
</script>
解决方案
DDL语句导致隐式提交;不受交易控制。
除了 SELECT,SQL 语句属于两大类之一:DML(数据操作语言)和DDL(数据定义语言)
将DML语句视为逐行操作。INSERT
,UPDATE
和DELETE
语句对行进行操作。这些操作可以在一个事务中执行,并且受制于ROLLBACK
和COMMIT
。
将DDL语句视为按列操作。CREATE TABLE
, ALTER TABLE
, 语句创建、修改或删除列。(DDL 语句不仅仅对表和列进行操作,但为了讨论的目的,我们将关注按列操作与按行操作。DDL 操作导致隐式提交,不受事务 ROLLBACK 的影响。
这种行为并不是 MySQL 独有的。
请注意,MySQL 8.0 中“原子 DDL”的引入并没有真正改变这一点。CREATE TABLE 语句要么成功并自动提交,要么失败。
推荐阅读
- java - 如何立即执行 Java 程序,然后按照定义使用 Job 执行程序
- python - 为字典中的每个字典添加一个键,在一行中执行此操作
- android - WifiP2pManager 无法添加LocalService 并且发现服务在应用程序处于后台时返回 WifiP2pManager.Error
- javascript - onsubmit 在部分视图的表单标签中不起作用
- spring-boot - 在 Chrome 浏览器上运行 springBoot 应用程序时出现错误 404
- javascript - 纯 Javascript:单击计算器按钮组中的按钮的最佳方法是什么?
- django - Django:如何在 admin.py 中使用关键字 static
- javascript - Firestore 快照分离不起作用
- reactjs - 反应状态没有用 socket.io 更新
- rust - 如何在 Rust 中将字符转换为整数并匹配手臂?