1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > SQL自定义完整性

SQL自定义完整性

时间:2023-09-18 08:01:39

相关推荐

SQL自定义完整性

自定义完整性。(事务)

事务的四个特性:

原子性 : 事务中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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。