手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

什么是事务

时间:2024-10-26 20:56:06

1、下图中介绍的存储过程的一个问题是, OUT 参数中返回的更新行数可能与实际更新的行数不同。该语句执行两个操作: 首先, 它收集要更新的行数的计数, 然后执行该更新。如果客户端运行年度工资提升程序, 同时另一个客户端使用将受更新语句影响的数据更新工资表, 则第二个客户端的更新可能发生在第一个客户端的 SELECT 到计数行和更新以更改工资信息。

什么是事务

2、通过使过程事务性, 可以避免这种争用条件。

什么是事务

3、任何域中的事务 (无论是否为数据库) 都需要符合四个属性 (统称为 ACID)

什么是事务

4、原子(Atomic)-事务的内容是作为一个整体完成的, 或者根本不完成。不可能在只应用一半事务的状态下查看数据库。

5、一致(Consistent)-事务完成后, 数据库将满足域的所有要求。例如, 在双方之间付款时, 从一方借记的数额应与记入另一方的数额相符。

6、独立(Isolated)-并行运行的事务应各自表现为是在数据库上运行的唯一事务。

7、持久(Durable)一旦提交事务, 它将被永久提交。任何后续的数据库更改 (如更新或崩溃) 都不会对提交的事务产生影响。

8、若要使第一步图中的存储过程成为事务性的, 必须使用 START TRANSACTION处理打开一个事务, 并使用 COMMIT 成功提交事务, 如下图所示:CREATE DEFINER=`root`@`localhost` PROCEDURE `annual_salary_raise`( IN percent INT, OUT total_updated INT)BEGIN START TRANSACTION; SELECT COUNT(*) INTO total_updated FROM salaries WHERE last_update_date > DATE_SUB(CURDATE(),INTERVAL 1 YEAR); UPDATE salaries SET annual_salary = annual_salary * ((100 + percent)/100),last_update_date = CURDATE() WHERE last_update_date > DATE_SUB(CURDATE(),INTERVAL 1 YEAR); COMMIT;END

什么是事务

9、运行此事务时, 任何其他试图更新工资表的连接都将被阻止, 直到事务完成。

10、如果在运行存储过程时发现数据库处于不一致状态, 或者如果未满足过程的某些条件, 也可以自行中止事务。中止使用 ROLLBACK 语句的事务。

什么是事务

11、回滚通常使用数据库日志进行管理, 并且所有日志条目都从事务一开始就被反转。其他正在运行的事务可能依赖于回滚的事务的结果-在这种情况下, 这些依赖事务也会回滚。

什么是事务
© 手抄报圈