我有一个包含5条记录的Employee表,而我正在运行以下脚本。脚本的结果是返回带有EmpID 2的记录。同时记录被删除。 这是正确的方法吗?
begin transaction A
select * from Employee where EmpID=2
begin transaction B
delete from Employee where EmpID=2
commit transaction B
commit transaction A
答案 0 :(得分:2)
你可以使用它:
DELETE
FROM employee
WHERE empId = 2
OUTPUT DELETED.*
这将删除记录并以原子方式在一个语句中输出其内容。
答案 1 :(得分:0)
如果您想选择EmpID = 2
行,那么您可以对其进行一些处理并确保在删除之前不会更改,请使用更新锁:
begin transaction A
select * from Employee with (updlock) where EmpID=2
delete from Employee where EmpID=2
commit transaction A
您还可以使用高于read committed
的事务隔离级别,最好是serializable
。