[SQL] MS SQL Server 관리 Studio에서 트랜잭션 작업에 가장 좋은 방법은
SQLMS SQL Server 관리 Studio에서 트랜잭션 작업에 가장 좋은 방법은
하자 내가 구문과 실행, 그래서 의미 맞습니다 SQL 문을 말한다.
관리 Studio (또는 다른 쿼리 도구)에서 내가 어떻게 테스트 SQL 문, 그리고 나는 그들이 무엇인가, 롤백 파산 통지하는 경우 (별도의 쿼리를?)
해결법
-
==============================
1.가장 쉬운 것은 트랜잭션에 코드를 포장 한 다음 라인으로 T-SQL 코드 라인의 각 배치를 실행하는 것입니다.
가장 쉬운 것은 트랜잭션에 코드를 포장 한 다음 라인으로 T-SQL 코드 라인의 각 배치를 실행하는 것입니다.
예를 들어,
Begin Transaction -Do some T-SQL queries here. Rollback transaction -- OR commit transaction
당신은 당신이 TRY ... CATCH 블록을 사용하여 수행 할 수 있습니다 오류 처리를 통합합니다. 오류는 다음 catch 블록 내에서 tranasction를 롤백 할 수 있습니다 발생합니다.
예를 들면 :
USE AdventureWorks; GO BEGIN TRANSACTION; BEGIN TRY -- Generate a constraint violation error. DELETE FROM Production.Product WHERE ProductID = 980; 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; IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; END CATCH; IF @@TRANCOUNT > 0 COMMIT TRANSACTION; GO
자세한 내용은 다음 링크를 참조하십시오.
http://msdn.microsoft.com/en-us/library/ms175976.aspx
희망이 도움이하지만 당신은 자세한 내용이 필요하면 알려 주시기 바랍니다.
-
==============================
2.나는 점을 추가 할 당신은 또한 할 수있는 (그리고 당신이 작성하는 것은 복잡한 경우해야) 테스트 모드에있는 경우 롤백에 테스트 변수를 추가하는. 그럼 당신은 한 번에 모든 일을 실행할 수 있습니다. 이 복잡한 스크립트 특히 자주 다양한 작업의 전후 결과를 확인하는 코드를 추가합니다.
나는 점을 추가 할 당신은 또한 할 수있는 (그리고 당신이 작성하는 것은 복잡한 경우해야) 테스트 모드에있는 경우 롤백에 테스트 변수를 추가하는. 그럼 당신은 한 번에 모든 일을 실행할 수 있습니다. 이 복잡한 스크립트 특히 자주 다양한 작업의 전후 결과를 확인하는 코드를 추가합니다.
예 아래 :
USE AdventureWorks; GO DECLARE @TEST INT = 1--1 is test mode, use zero when you are ready to execute BEGIN TRANSACTION; BEGIN TRY IF @TEST= 1 BEGIN SELECT *FROM Production.Product WHERE ProductID = 980; END -- Generate a constraint violation error. DELETE FROM Production.Product WHERE ProductID = 980; IF @TEST= 1 BEGIN SELECT *FROM Production.Product WHERE ProductID = 980; IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; END 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; IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; END CATCH; IF @@TRANCOUNT > 0 AND @TEST = 0 COMMIT TRANSACTION; GO
from https://stackoverflow.com/questions/506602/best-way-to-work-with-transactions-in-ms-sql-server-management-studio by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 역사적으로 사람들은 데이터베이스 필드의 크기 255하지 256을 사용합니까? (0) | 2020.07.19 |
---|---|
[SQL] 테이블에서 하나를 선택하여 무엇을 의미합니까? (0) | 2020.07.19 |
[SQL] 자바 프로그래밍 - SQL 문이 저장되어야 하는가? [닫은] (0) | 2020.07.19 |
[SQL] 저장되지 않은 SQL 쿼리 스크립트를 복구 (0) | 2020.07.19 |
[SQL] Laravel 웅변 테이블에 가입하고 관련 계산하기 (0) | 2020.07.19 |