数据库笔记14:处理事务与锁
【摘要】
/***********************
第十四单元 处理事务与锁
***********************/
/*
知识点学习,大家参看教材P248~250
1、事务的概念
&nbs...
/***********************
第十四单元 处理事务与锁
***********************/
/*
知识点学习,大家参看教材P248~250
1、事务的概念
一个逻辑工作单元,具有四个特性:原子性、一致性、隔离性、持久性
2、事务的操作
(1)开始事务:BEGIN TRANSACTION
(2)提交事务:COMMIT TRANSACTION
(3)回滚事务:ROLLBACK TRANSACTION
3、在事务中不能使用的T-SQL语句
*/
/*
任务一、定义/提交事务
*/
--1. 定义一个事务,在StuCou表里插入三条选课记录(同一个学生选三门课程),并提交
BEGIN TRANSACTION --开始事务
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '001' , 1 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '002' , 2 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '003' , 3 , '报名' );
COMMIT TRANSACTION --提交事务
--2. 验证,是否成功地插入了三条选课记录
SELECT *
FROM StuCou
WHERE StuNo = '00000025' ;
--3. 删除刚才插入的三条选课记录
DELETE FROM StuCou
WHERE StuNo = '00000025' ;
/*
任务二、回滚事务
*/
--1. 定义一个事务,在StuCou表里插入三条选课记录(同一个学生选三门课程),并回滚
BEGIN TRANSACTION --开始事务
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '001' , 1 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '002' , 2 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '003' , 3 , '报名' );
ROLLBACK TRANSACTION --回滚事务
--2. 验证,是否插入了三条选课记录
SELECT *
FROM StuCou
WHERE StuNo = '00000025' ;
/*
任务三、定义事务 --> 提交事务 | 回滚事务
*/
--1. 定义一个事务,向StuCou表中插入多行数据,如果报名课程数超过3门,则回滚事务,否则提交事务。
BEGIN TRANSACTION --开始事务
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '001' , 1 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '002' , 2 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '003' , 3 , '报名' );
DECLARE @ CourseNum INT
SET @ CourseNum =( SELECT COUNT (*) FROM StuCou WHERE StuNo = '00000025' )
IF @ CourseNum <= 3
BEGIN
COMMIT TRANSACTION --提交事务
PRINT '恭喜,选课成功!'
END
ELSE
BEGIN
ROLLBACK TRANSACTION --回滚事务
PRINT '遗憾,你报选门数超过三门,无效!'
END
--2. 验证,是否插入了三条选课记录
SELECT *
FROM StuCou
WHERE StuNo = '00000025' ;
--3. 删除刚才插入的三条选课记录
DELETE FROM StuCou
WHERE StuNo = '00000025' ;
--4. 定义一个事务,向StuCou表中插入多行数据,如果报名课程数超过3门,则回滚事务,否则提交事务。
BEGIN TRANSACTION --开始事务
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '001' , 1 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '002' , 2 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '003' , 3 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '004' , 4 , '报名' );
INSERT INTO StuCou ( StuNo , CouNo , WillOrder , State ) VALUES ( '00000025' , '005' , 5 , '报名' );
DECLARE @ CourseNum INT
SET @ CourseNum =( SELECT COUNT (*) FROM StuCou WHERE StuNo = '00000025' )
IF @ CourseNum <= 3
BEGIN
COMMIT TRANSACTION --提交事务
PRINT '恭喜,选课成功!'
END
ELSE
BEGIN
ROLLBACK TRANSACTION --回滚事务
PRINT '遗憾,你报选门数超过三门,无效!'
END
文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。
原文链接:howard2005.blog.csdn.net/article/details/79451339
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)