触发器、事务
# 触发器
当我们执行某个语句的时候,想触发某个函数,这个时候我们可以使用触发器
# 创建触发器
这个在Navicat好像创建触发器会失效,这里就直接贴书上的例子吧
# 删除触发器
使用drop语句删除
DROP TRIGGER handle
1
# 事务
MyISAM和InnoDB是两种最常使用 的引擎。前者不支持明确的事务处理管理,而后者支持
# 启动事务
直接使用 START TRANSACTION
来标志事务的开始
# 回滚事务
我们可以使用 ROLLBACK
来进行回滚,比如下面这个:
SELECT * FROM card;
START TRANSACTION;
DELETE FROM card WHERE ID = 1;
SELECT * FROM card;
ROLLBACK;
SELECT * FROM card;
1
2
3
4
5
6
2
3
4
5
6
可以查看下面这三个结果
可以看到,我们的数据成功删除了,但是回滚后数据又恢复了。。。
# 提交事务
使用 COMMIT
来提交事务,比如下面这个。如果前面语句都没啥问题的话,commit后如果没啥问题,事务就会提交成功。
START TRANSACTION;
DELETE FROM card WHERE ID = 1;
DELETE FROM card WHERE ID = 1;
DELETE FROM card WHERE ID = 1;
COMMIT;
1
2
3
4
5
2
3
4
5
# 使用保留点
使用 SAVEPOINT
关键词就可以设置保留点了,然后加上 ROLLBACK
可以回退到保留点。(这个要在事务中才有用)
START TRANSACTION;
SAVEPOINT point1;
DELETE FROM card WHERE ID = 2;
ROLLBACK TO point1;
COMMIT;
1
2
3
4
5
2
3
4
5
# 更改默认的提交行为
默认的MySQL行为是自动提交所有更改。换句话说,任何 时候你执行一条MySQL语句,该语句实际上都是针对表执行的,而且所做 的更改立即生效。为指示MySQL不自动提交更改,需要使用以下语句
SET autocommit = 0;
1
autocommit标志是针对每个连接而不是服 务器的
编辑 (opens new window)
上次更新: 2021/05/11, 19:39:39