【发布时间】:2018-05-27 18:19:53
【问题描述】:
我正在尝试了解如何以及何时提交 /rollback 事务。
我正在使用IF 条件来测试代码是否产生错误,如果是,我想回滚。
测试代码的最佳方法是什么,以便您知道何时提交或回滚。
我试过下面的代码,但我得到了这个错误
消息 102,级别 15,状态 1,第 5 行 '*' 附近的语法不正确。
Begin Transaction DBChallenge1Setup
Create Table EmployeeRecords(
EmployeeID varchar(50) PRIMARY KEY
PpsNo varchar(8),
FirstName varchar(50),
LastName varchar(50),
Department varchar(50),
SupervisorId varchar(50),
PhoneNo varchar(50),
EmailAddress varchar(50),
DateOfBirth date);
Insert Into EmployeeRecords
Values(1, '5686213Q', 'Dan', 'Roche', 'IT',232, '012323232', 'danroche@itsolutions.com', '1970-04-10'),
(2, '6534223Q', 'Nicholas', 'Martin', 'IT',233, '012323233', 'nicholasmartin@itsolutions.com', '1974-12-01'),
(232, '9514223W', 'Jane', 'Donnelly', 'IT',999, '012323234', 'janedonnelly@itsolutions.com', '1960-02-12'),
(233, '4212223S', 'Amy', 'Smythe', 'IT',999, '012323235', 'amysmythe@itsolutions.com', '1967-09-11');
Select * From EmployeeRecords
Select @@Rowcount As RecordsEntered, @@ERROR As Errors
if @@Error > 0 ROLLBACK Transaction DBChallenge1Setup
if @@Error = 0 Commit Transaction DBChallenge1Setup;
【问题讨论】:
-
您使用的是什么关系型数据库?此外,
*给你一个错误。去掉它。并且您的 create 语句中的列之间没有,。 -
如何使用
Try Catch块。 -
我正在使用 SSMS。我已经添加了逗号。我需要 * 因为我想返回所有列。我不熟悉 Try Catch。但会查一下。我尝试先正确使用 Commit/Rollback。
-
CREATE语句中PRIMARY KEY旁边的*就是我所说的删除。 -
对不起。我见过。我从 word doc 中复制了虚拟数据。
标签: sql sql-server transactions commit rollback