트랜잭션을 사용하여 테이블에서 몇 줄을 삭제하려고합니다. 세 번 명령 삭제를 사용합니다. 두 개는 OK이고 세 번째는 실수입니다. 저장 지점을 만들고 2 개의 개체를 삭제하려고합니다. 하지만 오류가 발생했습니다 : 현재 트랜잭션을 커밋 할 수 없으며 저장 점으로 롤백 할 수 없습니다. 전체 트랜잭션을 롤백하십시오. 여기 내 코드 :SQL. 트랜잭션을 롤백 할 수 없습니다.
BEGIN TRANSACTION
BEGIN TRY
DELETE FROM employee
WHERE ID = 101; --OK
DELETE FROM employee
WHERE Name = 'James'; --OK
SAVE TRANSACTION point_1;
DELETE FROM employee
WHERE ID = '11a'; --letters are not allowed
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION point_1
PRINT 'Error! Not all employees were deleted from database.'
END CATCH
아무도 도와 줄 수 있습니까? 고마워요!
BEGIN TRANSACTION
DELETE FROM employee
WHERE ID = 101;
DELETE FROM employee
WHERE Name = 'James';
SAVE TRANSACTION point_1;
BEGIN TRY
DELETE FROM employee
WHERE ID = '11a';
END TRY
BEGIN CATCH
if XACT_STATE() = -1
ROLLBACK TRANSACTION
if XACT_STATE() = 1 and @@TRANCOUNT = 0
ROLLBACK TRANSACTION
if XACT_STATE() = 1 and @@TRANCOUNT > 0
ROLLBACK TRANSACTION point_1
PRINT 'Error! Not all employees were deleted from database.'
END CATCH
이 시간에는 에러 메시지가 없지만, 처음 두 개체가 삭제되지 않습니다
나는이 방법을 시도했다. 내 실수는 어디 갔지? 고맙습니다!
[SQL 트랜잭션 오류 : 현재 트랜잭션을 커밋 할 수 없으며 로그 파일에 쓰는 작업을 지원할 수 없습니다.] (http://stackoverflow.com/questions/7488149/sql-transaction-error-the-current -transaction-can-be-commit-and-can not-su) –
내 쿼리가 커밋 할 수없는 상태가됩니다. 내 세이브 포인트로 어떻게 돌아갈 수 있습니까? – user3443227