我有一个表,有id,名称,年龄。 (表名:员工)SQL删除与交易
该id是表中的主键。有一个Sproc删除给定名称的条目。 因此,在我的删除存储过程中,我首先选择基于名称的ID。如果名字是有效的,那么我做一个删除。
DECLARE @Id uniqueidentifier
BEGIN TRANSACTION
SELECT TOP 1 @Id=Id FROM Employee WHERE [email protected]
IF @@ROWCOUNT = 0
BEGIN
ROLLBACK TRANSACTION
RETURN ERROR_NOT_FOUND
END
DELETE FROM EMPLOYEE WHERE Id = @Id
IF @@ROWCOUNT = 0
BEGIN
ROLLBACK TRANSACTION
RETURN ERROR_NOT_FOUND
END
COMMIT TRANSACTION
我的问题是我是否需要在这种情况下需要交易。我知道我们需要一个事务,当我们想要原子操作时(一组操作应该一起通过/失败)。
请注意上述情况是否需要交易..以及有/没有交易的优点/缺点是什么。
大多数第一件事你需要改变使用名称获取ID。它不安全! 。 – 2011-04-30 12:00:33
将表存储为表中的列也很奇怪 - 可能更安全,更稳定地存储不变值(DoB),并在存储过程或临时表或视图中使用计算的年龄。 – 2011-04-30 17:04:26