免费网站网络推广,福建漳州东山规划建设局网站,广州协会网站建设,智慧团建网页手机版官网自定义完整性。#xff08;事务#xff09; 事务的四个特性#xff1a; 原子性 : 事务中SQL语句是一个整体, 不可分离,要么都执行、要么都不执行 一致性 : 事务前后数据保持一致 隔离性 : 事务中不允许其他事务介入 永久性 : 事务执行之后对数据表的修改是永久的 Expectatio…自定义完整性。事务 事务的四个特性 原子性 : 事务中SQL语句是一个整体, 不可分离,要么都执行、要么都不执行 一致性 : 事务前后数据保持一致 隔离性 : 事务中不允许其他事务介入 永久性 : 事务执行之后对数据表的修改是永久的 Expectation 保证数据被操作后前后一致。 …这样说不易理解…来举个栗子,银行转账 假设有 张三有10000元和李四有5000元, check约束张三的钱必须大于0元 现要张三转10000元给李四 sql代码如下
update trans set mon mon - 10000 where id 张三
update trans set mon mon 10000 where id 李四
insert into card values (张三,10000,支出)
insert into card values (李四,10000,收入)只看check约束 ,显然第一条语句不能执行,报错,而后三条可执行,那么,张三没能转10000, 这一万该银行背了… 为了解决上述问题,有一个事务处理机制,来保证自定义完整性,即要转账就要成功, 要不就全部失败… 上代码
begin tran --事务declare i intupdate trans set mon mon - 10000 where id 张三set i i errror --记录上一行的错误update trans set mon mon 10000 where id 李四set i i errrorinsert into card values (张三,10000,支出)set i i errrorinsert into card values (李四,10000,收入)set i i errrorif i 0 --有错误 rollback tran --撤回代码,不执行elsecommint tran --0 个错误 ,执行sql