我想知道如果我无法插入,是否有办法说明删除删除。
请建议。
如下所示。
BEGIN TRAN
Delete from MYTABLE where ID=@ID;
INSERT INTO MYTABLE (ID, NAME)
SELECT @ID, NAME
COMMIT
答案 0 :(得分:10)
您可以将两个语句放入TRY....CATCH
块中,只有在两个语句都成功时才提交:
BEGIN TRANSACTION
BEGIN TRY
DELETE FROM dbo.MYTABLE WHERE ID=@ID;
INSERT INTO dbo.MYTABLE (ID, NAME)
SELECT @ID, NAME
-- COMMIT only if both DELETE and INSERT worked ....
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
-- ROLLBACK if either DELETE and INSERT failed ....
ROLLBACK TRANSACTION
END CATCH
答案 1 :(得分:2)
启用xact_abort以在任何错误上回滚事务。
SET XACT_ABORT ON;
BEGIN TRAN
Delete from MYTABLE where ID=@ID;
INSERT INTO MYTABLE (ID, NAME)
SELECT @ID, NAME
COMMIT TRAN
答案 2 :(得分:0)
这是完成您似乎尝试的另一种方法:
update myTable
set name = @name
where id = @id
答案 3 :(得分:0)
BEGIN TRAN
Delete from MYTABLE where ID=@ID;
INSERT INTO MYTABLE (ID, NAME)
SELECT @ID, NAME
if @@error = 0 and @@trancount > 0
commit
else
rollback