SAVEPOINT — 현재 트랜잭션 내에서 새 저장점 정의
세이브포인트젠 토토_name
세이브포인트현재 트랜잭션 내에 새로운 저장점을 설정합니다.
세이브포인트는 설정된 후 실행되는 모든 명령을 롤백하여 트랜잭션 상태를 저장포인트 당시의 상태로 복원할 수 있도록 하는 트랜잭션 내부의 특수 표시입니다.
젠 토토_name새 저장점에 부여할 이름입니다. 동일한 이름의 저장점이 이미 존재하는 경우 동일한 이름의 새로운 저장점이 출시될 때까지 액세스할 수 없습니다.
사용다음으로 롤백저장점으로 롤백합니다. 사용세이브포인트 출시세이브포인트를 파괴하고, 설정된 후에 실행된 명령의 효과를 유지합니다.
저장점은 트랜잭션 블록 내부에서만 설정할 수 있습니다. 트랜잭션 내에 여러 저장점이 정의될 수 있습니다.
저장점을 설정하고 나중에 설정 후 실행된 모든 명령의 효과를 취소하려면:
시작;
INSERT INTO table1 VALUES (1);
젠 토토 my_젠 토토;
INSERT INTO table1 VALUES (2);
저장점으로 롤백 my_젠 토토;
INSERT INTO table1 VALUES (3);
커밋;
위 트랜잭션은 값 1과 3을 삽입하지만 2는 삽입하지 않습니다.
저장점을 설정하고 나중에 파기하려면:
시작;
INSERT INTO table1 VALUES (3);
젠 토토 my_젠 토토;
INSERT INTO table1 VALUES (4);
RELEASE 젠 토토 my_젠 토토;
커밋;
위 거래는 3과 4를 모두 삽입합니다.
단일 저장점 이름을 사용하려면:
시작;
INSERT INTO table1 VALUES (1);
젠 토토 my_젠 토토;
INSERT INTO table1 VALUES (2);
젠 토토 my_젠 토토;
INSERT INTO table1 VALUES (3);
-- 두 번째 저장점으로 롤백
저장점으로 롤백 my_젠 토토;
SELECT * FROM 테이블1; -- 행 1과 2를 표시합니다.
-- 두 번째 저장점을 해제합니다.
RELEASE 젠 토토 my_젠 토토;
-- 첫 번째 저장점으로 롤백
저장점으로 롤백 my_젠 토토;
SELECT * FROM 테이블1; -- 행 1만 표시
커밋;
위 트랜잭션은 행 3이 먼저 롤백된 다음 행 2가 롤백되는 것을 보여줍니다.
SQL에서는 동일한 이름을 가진 다른 저장점이 설정될 때 저장점이 자동으로 삭제되도록 요구합니다. 에서PostgreSQL, 이전 저장점은 유지되지만 롤백하거나 해제할 때는 최신 저장점만 사용됩니다. (최신 저장점을 해제함세이브포인트 출시이전 버전에 다시 액세스할 수 있게 됩니다세이브포인트로 롤백그리고세이브포인트 출시.) 그렇지 않으면,세이브포인트완전히 SQL을 준수합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.