日期:2014-05-17  浏览次数:20469 次

请帮忙看一下使用保留点的回滚事务
BEGIN TRANSACTION  
INSERT INTO 客户表
(客户编号,姓名,性别,年龄,住址,电话,电子邮件)
 VALUES
('20245','张三','男','46','北京','135000000',NULL)
SAVE TRANSACTION aa; //创建保留点aa
INSERT INTO 订单表
(订单编号,客户编号,订单金额,订货日期,备注) 
VALUES
('051867','20240','242.3','2012-02-28',NULL)  
ROLLBACK aa;
COMMIT 
GO
SELECT * FROM 客户表
SELECT * FROM 订单表


上面语句插入客户表的语句没有错,但插入订单表的时候,客户编号写错了,怎样使用保留点,只回滚插入订单表那个地方呢?插入客户表不撤销,帮我改一下
谢谢...


------解决方案--------------------
SQL code


BEGIN TRANSACTION   
INSERT INTO 客户表
(客户编号,姓名,性别,年龄,住址,电话,电子邮件)
 VALUES
('20245','张三','男','46','北京','135000000',NULL)
SAVE TRANSACTION aa-- //创建保留点aa
INSERT INTO 订单表
(订单编号,客户编号,订单金额,订货日期,备注)  
VALUES
('051867','20240','242.3','2012-02-28',NULL)   
ROLLBACK TRANSACTION aa
COMMIT  TRANSACTION
GO
SELECT * FROM 客户表
SELECT * FROM 订单表

------解决方案--------------------
SQL code
ROLLBACK aa;--改成 ROLLBACK TRAN aa;

------解决方案--------------------
SQL code

BEGIN TRANSACTION   
INSERT INTO 客户表
(客户编号,姓名,性别,年龄,住址,电话,电子邮件)
 VALUES
('20245','张三','男','46','北京','135000000',NULL)
SAVE TRANSACTION aa; //创建保留点aa --这个地方设置了保留点
INSERT INTO 订单表
(订单编号,客户编号,订单金额,订货日期,备注)  
VALUES
('051867','20240','242.3','2012-02-28',NULL)   
ROLLBACK  TRANSACTION aa; --此处回滚就会撤销保留点以后的操作,之前的插入操作保留
COMMIT  TRANSACTION
GO
SELECT * FROM 客户表
SELECT * FROM 订单表

------解决方案--------------------
探讨
引用:

SQL code
ROLLBACK aa;--改成 ROLLBACK TRAN aa;


COMMIT和COMMIT TRANSACTION 和 COMMIT TRAN是一样的吧,

ROLLBACK和ROLLBACK TRANSACTION或ROLLBACK TRAN不是一样的吗?