CUBRID学习笔记17 事务的回滚
2016-03-16 16:36
465 查看
语法:ROLLBACK [ WORK ]
下面的语句会报错
ALTER TABLE code DROP s_name;
INSERT INTO code (s_name, f_name) VALUES ('D','Diamond');
ERROR: s_name is not defined.
回滚 修复破损的伤口
ROLLBACK WORK;
再来
ALTER TABLE code drop s_name;
INSERT INTO code (f_name) VALUES ('Diamond');
COMMIT WORK;
部分回滚
可以设置标记,使回滚到指定的标记位置
方法1 SAVEPOINT mark;
mark:
_ a SQL identifier
_ a host variable (starting with :)
方法2
ROLLBACK [ WORK ] [ TO [ SAVEPOINT ] mark ] [ ; ]
mark:
_ a SQL identifier
_ a host variable (starting with :)
例子
首先设置两个回滚的标记 sp1 和sp2
CREATE TABLE athlete2 (name VARCHAR(40), gender CHAR(1), nation_code CHAR(3), event VARCHAR(30));
INSERT INTO athlete2(name, gender, nation_code, event)
VALUES ('Lim Kye-Sook', 'W', 'KOR', 'Hockey');
SAVEPOINT SP1;
SELECT * from athlete2;
INSERT INTO athlete2(name, gender, nation_code, event)
VALUES ('Lim Jin-Suk', 'M', 'KOR', 'Handball');
SELECT * FROM athlete2;
SAVEPOINT SP2;
RENAME TABLE athlete2 AS sportsman;
SELECT * FROM sportsman;
ROLLBACK WORK TO SP2;
上面的重命名表的操作将被回滚
SELECT * FROM athlete2;
DELETE FROM athlete2 WHERE name = 'Lim Jin-Suk';
SELECT * FROM athlete2;
ROLLBACK WORK TO SP2;
上面的删除也不会执行,会被回滚
SELECT * FROM athlete2;
ROLLBACK WORK TO SP1;
SELECT * FROM athlete2;
COMMIT WORK;
这个是回滚到sp1的例子
下面的语句会报错
ALTER TABLE code DROP s_name;
INSERT INTO code (s_name, f_name) VALUES ('D','Diamond');
ERROR: s_name is not defined.
回滚 修复破损的伤口
ROLLBACK WORK;
再来
ALTER TABLE code drop s_name;
INSERT INTO code (f_name) VALUES ('Diamond');
COMMIT WORK;
部分回滚
可以设置标记,使回滚到指定的标记位置
方法1 SAVEPOINT mark;
mark:
_ a SQL identifier
_ a host variable (starting with :)
方法2
ROLLBACK [ WORK ] [ TO [ SAVEPOINT ] mark ] [ ; ]
mark:
_ a SQL identifier
_ a host variable (starting with :)
例子
首先设置两个回滚的标记 sp1 和sp2
CREATE TABLE athlete2 (name VARCHAR(40), gender CHAR(1), nation_code CHAR(3), event VARCHAR(30));
INSERT INTO athlete2(name, gender, nation_code, event)
VALUES ('Lim Kye-Sook', 'W', 'KOR', 'Hockey');
SAVEPOINT SP1;
SELECT * from athlete2;
INSERT INTO athlete2(name, gender, nation_code, event)
VALUES ('Lim Jin-Suk', 'M', 'KOR', 'Handball');
SELECT * FROM athlete2;
SAVEPOINT SP2;
RENAME TABLE athlete2 AS sportsman;
SELECT * FROM sportsman;
ROLLBACK WORK TO SP2;
上面的重命名表的操作将被回滚
SELECT * FROM athlete2;
DELETE FROM athlete2 WHERE name = 'Lim Jin-Suk';
SELECT * FROM athlete2;
ROLLBACK WORK TO SP2;
上面的删除也不会执行,会被回滚
SELECT * FROM athlete2;
ROLLBACK WORK TO SP1;
SELECT * FROM athlete2;
COMMIT WORK;
这个是回滚到sp1的例子
相关文章推荐
- 主流存储引擎详解:Innodb,Tokudb、Memory、MYISAM、Federated
- push以及pop,shift,unshift
- C++之继承与派生(1)
- 阻止Eclipse一直building workspace
- 心得20160316
- 7. Reverse Integer
- Java编程之构造代码块
- iOS 关于枚举的使用
- JNI签名-android
- SIP协议研究浅析
- SSIS使用Script task处理Active Directory
- 常用查找算法(顺序、折半、二叉树、哈希、分块)介绍
- Android基础-Android的生命周期
- 词频统计
- BZOJ3636: 教义问答手册
- lstm clip
- 大话设计模式学习(一)----装饰模式
- 完成一个安卓小项目之后的小感悟
- iOS网络3—UIWebView与WKWebView使用详解
- web技术类书单2016