Jay*_*van 11 sql-server-2005 sql-server-2008 sql-server
我希望能够预测 DELETE 是否会违反约束,而无需实际执行删除。
我有什么选择来做这件事?有没有一种简单的方法可以对 DELETE 进行“试运行”?
Aar*_*and 26
如果您的目标是仅在所有删除都成功时处理所有删除,为什么不使用 TRY/CATCH:
BEGIN TRANSACTION;
BEGIN TRY
DELETE #1;
DELETE #2;
DELETE #3;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
END CATCH
Run Code Online (Sandbox Code Playgroud)
如果目标是允许所有成功的删除成功,即使一个或多个失败,那么您可以使用单独的 TRY/CATCH,例如
BEGIN TRY
DELETE #1;
END TRY
BEGIN CATCH
PRINT 1;
END CATCH
BEGIN TRY
DELETE #2;
END TRY
BEGIN CATCH
PRINT 1;
END CATCH
Run Code Online (Sandbox Code Playgroud)
一种选择是开始事务,运行删除,然后始终回滚:
begin tran
delete Table1 where col1 = 1
-- Test whether it is there
select * from Table1 where col1 = 1
rollback tran
-- Confirm that it is still there
select * from Table1 where col1 = 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16883 次 |
最近记录: |