我有一個表,有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