이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 젠 토토버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

와이즈 토토

이름

LOCK — 트랜잭션 내부 테이블의 명시적 와이즈 토토
와이즈 토토 [ 표 ]테이블

입력

테이블

잠글 기존 테이블의 이름.

출력

삭제 0

성공적인 와이즈 토토 시 메시지가 반환되었습니다.와이즈 토토다음으로 구현됩니다.다음에서 삭제테이블이것은 보장되지 않습니다 모든 행을 삭제하세요.

오류테이블: 테이블은 존재하지 않습니다.

다음의 경우 메시지가 반환되었습니다.테이블존재하지 않습니다.

설명

와이즈 토토배타적 모드로 테이블을 잠급니다. 거래 내부. 이에 대한 고전적인 사용은 다음과 같습니다. 일부 데이터를 선택한 다음 내부에서 업데이트하고 싶습니다. 거래. LOCK을 사용하여 테이블을 명시적으로 잠그지 않는 경우 문에서는 처음에만 암시적으로 잠깁니다.업데이트, 삽입또는삭제작업. 배타적으로 잠그지 않으면 선택하기 전에 테이블을 읽으면 다른 사용자도 읽을 수 있습니다. 데이터를 선택하고 자체 업데이트를 시도하여 두 사람 모두 상대방이 해당 코드를 해제할 때까지 기다리는 동안 교착 상태에 빠지게 됩니다. 선택 유도된 공유 와이즈 토토을 통해 독점 와이즈 토토을 얻을 수 있습니다. 업데이트.

교착 상태의 또 다른 예는 한 사용자가 하나의 테이블을 잠그는 것입니다. 다른 사용자가 두 번째 테이블을 잠급니다. 둘 다 자신을 유지하는 동안 기존 와이즈 토토이 있는 경우 첫 번째 사용자가 두 번째 사용자의 와이즈 토토을 시도합니다. 테이블을 잠그고 두 번째 사용자가 첫 번째 사용자의 테이블을 잠그려고 합니다. 두 사용자 모두 테이블을 사용할 수 있을 때까지 교착 상태에 빠졌습니다. 이에 대한 유일한 해결책은 두 사용자가 모두 테이블을 잠그는 것입니다. 동일한 순서이므로 사용자의 와이즈 토토 획득 및 요청이 형성되지 않습니다. 교착상태.

참고: 포스트그레스그렇습니다 교착 상태를 감지하고 트랜잭션을 롤백하여 문제를 해결합니다. 교착상태. 일반적으로 교착상태에 빠진 트랜잭션 중 적어도 하나는 성공적으로 완료됩니다.

참고

와이즈 토토포스트그레언어 확장.

와이즈 토토내부에서만 작동합니다 거래.

버그:잠긴 테이블이 삭제되면 테이블은 삭제될 것입니다 거래가 아직 진행 중인 경우에도 자동으로 와이즈 토토이 해제됩니다. 진행 중입니다.

사용법

--교착 상태를 방지하기 위한 명시적 와이즈 토토:
--
일을 시작하세요.
    LOCK 필름;
    SELECT * 영화에서;
    업데이트 영화 SET len = 간격 '100분'
        WHERE len = 간격 '117분';
작업 커밋;

호환성

SQL92

없습니다락 테이블SQL928853_8880트랜잭션 설정8916_8968