SQL管理事务处理

//事务处理相关概念
事务:一组SQL语句
回退:撤销指定SQL语句的过程
提交:将未存储的的SQL语句结果写入数据库表
保留点:设置的临时占位符,可以对它发布回退,与回退整个事务不同
事务处理用于管理INSERT、UPDATE、DELETE语句
//标识事务处理块
SQL Server:
BEGIN TRANSACTION
...
COMMIT TARNSACTION
MySQL:
START TRANSACTION
...
Oracle:
SET TRANSACTION
...
PostgreSQL:
BEGIN
...
//使用ROLLBACK撤销SQL语句
DELETE FROM Orders
ROLLBACK
//使用COMMIT,因为在事务处理块中不会隐式提交(自动进行保存提交)
SQL Server:
BEGIN TARNSACTION
DELETE OrdersItems WHERE order_num=12345
DELETE Orders WHERE ordee_num=12345
COMMIT TRANSACTION//在以上两个DELETE语句都正常时才会保存提交
Oracle:
SET TRANSACTION
DELETE OrdersItems WHERE order_num=12345
DELETE Orders WHERE ordee_num=12345
COMMIT
//使用保留点,用于回退或保留部分事务
My SQL,Oracle:	SAVEPOINT deletel//应该唯一标识
		          ROLLBACK TO deletel
SQL Server:	SAVE TRANSACTION deletel
		ROLLBACK TRANSACTION deletel
//完整的SQL Server例子
BEGIN TRANSACTION
INSERT INTO Customers(cust_id,cust_name)
VALUES(1000001,'Toy');
SAVE TRANSACTION StartOrder;
INSERT INTO Orders(order_num,order_date,cust_id)
VALUES(20100,'2001/12/1',1000001);
IF @@ERROR <>0 ROLLBACK TRANSACTION StartOrder;
INSERT INTO OrderItems(order_num,order_item,prod_id,quantity,item_price)
VALUES(20100,1,'BR01',100,5.49);
IF @@ERROR <>=0 ROLLBACK TRANSACTION StartOrder;
INSERT INTO OrderItems(order_num,order_item,prod_id,quantity,item_price)
VALUES(20100,2,'BR03',100,10.49);
IF @@ERROR <>=0 ROLLBACK TRANSACTION StartOrder;
COMMIT TRANSACTION

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值