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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

伪类和伪元素

选择第一个子元素&#xff1a;first-child li:first-child{text-decoration: underline;}li:last-child{color: red;}p:first-child{font-style: italic;} <p>xiaoren</p><ul><li>Insert Key</li><li>Turn Key<strong>clockwise<…

T-SQL存储过程

存储过程。即T-SQL里的方法。类似封装的思想。 基本语法如下&#xff1a; create proc 方法名 name 默认值可不写&#xff0c;传入的参数 数据类型 , p变量名 数据类型 output (返回值) asSql代码 go--调用上面方法 declare variable 和p一样的类型 exec 方法名 传值 , var…

Extjs4开发中的一些问题

1. 子frame刷新的问题 一般在jsp里面&#xff0c;要实现界面跳转&#xff0c;有很多方法&#xff0c;最典型的就是window.location.href"href",但是在嵌套有iframe框架的页面布局&#xff0c;使用上述语句&#xff0c;只会使iframe本身实现跳转&#xff0c;如果遇到…

TSQL索引与视图

创建视图 简化sql 代码&#xff0c;还有&#xff0c;给予权限&#xff08;只能查指定的列&#xff09; create view 视图名 as sql代码&#xff0c;不要有同名列&#xff08;只能一句sql代码&#xff09; go select * from 视图名 &#xff08;最好不要用视图做更改操作&#…

jacob 实现Office Word文件格式转换

关于jacob用法&#xff0c;百度一下就会发现几乎都是复制2004年一个代码&#xff0c;那段代码实现的是从一个目录读取所有doc文件&#xff0c;然后把它转html格式。 为了便习学习和使用&#xff0c;我把代码看懂后精简了一下&#xff0c;得出不少新结论&#xff0c;拿出来和大家…

2021-07-22

leetcode547 第一次做这种题&#xff0c;有点生&#xff0c;借鉴 class Solution { public:void dfs(vector<vector<int>>& isConnected,vector<int>&isvisited,int i){for(int j0;j!isConnected.size();j){if(isConnected[i][j]1&&isvisit…

树的同构

输入样例1&#xff08;对应图1&#xff09;&#xff1a;8A 1 2B 3 4C 5 -D - -E 6 -G 7 -F - -H - -8G - 4B 7 6F - -A 5 1H - -C 0 -D - -E 2 -输出样例1:Yes输入样例2&#xff08;对应图2&#xff09;&#xff1a;8B 5 7F - -A 0 3C 6 -H - -D - -G 4 -E 1 -8D 6 -B 5 -E - -…

.Net 中的封装知识点

c # 中的封装 1&#xff0c;类与对象 生活中现有对象&#xff0c;然后人们先对其归类。 而程序中&#xff0c;先有类&#xff0c;再有对象。有了这些类&#xff0c;才能生成实际的对象&#xff0c;即类的实例化。&#xff08;类名new 一个对象&#xff09; 对象是从类里那东西的…

[家里蹲大学数学杂志]第236期钟玉泉复变函数论前六章第二组习题参考解答

第一章 复数与复变函数 1将复数 $$\bex \frac{(\cos5\varphii\sin 5\varphi)^2}{(\cos3\varphi-i\sin 3\varphi)^3} \eex$$ 化为指数形式. 解答: 由 Euler 公式, $$\bex \mbox{原式}\frac{(e^{i5\varphi})^2}{(e^{-i3\varphi})^3} e^{i[10\varphi-(-9\varphi)]}e^{19\varphi…

思想

思想是自由的&#xff0c;鞭策和束缚下的思想不会深刻&#xff0c;所以不要强迫自己去思考和学习&#xff0c;除非你在那里找到了乐趣&#xff1b; 思想是懒惰的&#xff0c;稍不留神就可能走入邪道&#xff0c;或者呼呼的在那里享受睡觉&#xff1b; 所以最好的办法是&#…

.Net 中的继承知识点

.Net 中的面向对象 继承 继承思想的应用是为了解决封装遗留下来的代码冗余的问题。但这是简单的理解。 在一个系统开发中会有重复的成员&#xff0c;所以找到这些共有的成员&#xff0c;把它们装进一个类中&#xff0c;即父类。 语法 A:B A类继承了B,B 是父类。 A类可访问B类中…

Java单例模式简单实现

代码 public class Singleton {private static Singleton singleton;//创建一个单例对象public static Singleton getSingleton(){if(singleton null){//判断对象是否为空singleton new Singleton();}return singleton;} } public class Test {public static void main(Strin…

2021-07-23

leetcode46 第一次写回溯的题&#xff0c;思想还是dfs&#xff0c;就是多了一步恢复原状态&#xff0c;之前好像也写过。每天做的有点少&#xff0c;得加油了 class Solution { public:vector<vector<int>> permute(vector<int>& nums) {vector<vec…

firefox flash-plugin怎样安装

1&#xff0c;到adobe官网上下载Linux的tar.gz的包&#xff1b; 2&#xff0c;tar -zxvf flash_player_npapi_linux.x86_64.tar.gz&#xff1b; 3&#xff0c;sudo cp libflashplayer.so /usr/lib/mozilla/plugins/&#xff1b; 4&#xff0c;重启Firefox&#xff0c;搞定。…

.Net中的多态知识点

多态&#xff0c;不同的对象对同一个方法有不同的响应。 目的&#xff0c;为了解决继承中父类访问子类方法要转型的问题。 还是继承的问题&#xff0c;父类实例化子类&#xff0c;被看成父类类型。 条件&#xff1a; 多态 (3种方式) 1, 基于继承 重写 父类实例子类化&#xff…

框架

http://kohanaframework.org/转载于:https://www.cnblogs.com/gaohuag/p/3549237.html

leetcode53 dp and 分治

leetcode53 1.dp动态规划 class Solution { public:int maxSubArray(vector<int>& nums) {int lennums.size();if(len0) return 0;if(len1) return nums[0];vector<int>dp(len,0);dp[0]nums[0];int max_numdp[0];int i1;for(;i!len;i){if(dp[i-1]>0)dp[i]d…

centos Ipython安装

1&#xff0c;直接 sudo yum install ipython可能出现问题&#xff0c;不一定能成&#xff1b; 2&#xff0c;可先安装下列东西&#xff0c;然后如上安装ipython sudo yum install python-matplotlib # 2D 绘图库 sudo yum install PyQt4 # Qt4 的 Python 绑定 sudo yum ins…