- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
35.事务PHP课件必威体育精装版版课案
事务
什么是事务?
一组系列的数据库操作语句组合在一起称为事务,譬如删除用户简历
首先,需要删除用户简历表里的数据
DELETE FROM cv WHERE id = 8;
其次,删除教育经历表中的数据
DELETE FROM edu WHERE cv_id = 8;
甚至,如果还有其他的关联表,也需要一起删除,但是如果第二行语句执行出错,那么会导致数据清理不彻底
BEGIN COMMIT
CREATE TABLE transaction_test ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20));
BEGIN 开始一个事务(START TRANSACTION;)
COMMIT 提交事务
事务提交测试
BEGIN;
INSERT INTO transaction_test (name) VALUES (andy);
SELECT * FROM transaction_test;
INSERT INTO transaction_test (name) VALUES (tom);
SELECT * FROM transaction_test;
INSERT INTO transaction_test (name) VALUES (jack);
打开两个mysql控制台,一个用来执行下面的事务操作,每次插入一条记录后执行SELECT看下是否有数据,假定名称为控制台A
事务提交测试
COMMIT;
打开另一个控制台,假设名称为控制台B,执行SELECT操作,查看表中是否有数据
SELECT * FROM transaction_test;
控制台A执行事务提交命令
控制台B中再次执行SELECT查看是否有数据
ROLLBACK
ROLLBACK事务回滚
BEGIN;INSERT INTO transaction_test (name) VALUES (bob);
SELECT * FROM transaction_test;
ROLLBACK;
注意,任何的COMMIT或者ROLLBACK命令都会触发事务的结束
autocommit
在MySQL中,每一个查询,默认都是当做一个事务来处理的
所以autocommit默认是开启的
如果要关闭自动提交事务功能,需要在执行各种语句之前执行一条语句
SET AUTOCOMMIT = 0;
注意,一旦关闭自动提交,后面所有的查询都不会立刻执行,而是会等待COMMIT或者ROLLBACK的出现
注意,如果需要恢复自动提交,需要再执行
SET AUTOCOMMIT = 1;
autocommit测试
SET AUTOCOMMIT = 0;
INSERT INTO transaction_test (name) VALUES (lee);INSERT INTO transaction_test (name) VALUES (john);
ROLLBACK;
INSERT INTO transaction_test (name) VALUES (john);COMMIT;
INSERT INTO transaction_test (name) VALUES (lee);
请思考,如果在控制台A中数据下面的语句,在控制台B中插入的是什么数据?
autocommit测试
SET AUTOCOMMIT = 1;
请书写语句亲自测试一下,如果在最后再添加上下面的语句,lee能否最终插入到表中?
文档评论(0)