토토 캔 [표] [만]이름[ *] [, ...] [inLockmode모드] [nowait]여기서Lockmode중 하나입니다.액세스 공유 | 줄 공유 | Row Exclusive | 공유 업데이트 독점
| 공유 | Row Exclusive 공유 | 독점 | 액세스 독점
토토 캔 테이블충돌 토토 캔 장치가 해제되기 위해 필요한 경우 대기하여 테이블 레벨 토토 캔을 얻습니다. 만약에nowait지정되어 있습니다.토토 캔 테이블원하는 토토 캔 토토 캔 장치를 획득하기를 기다리지 않습니다. 즉시 획득 할 수없는 경우 명령이 중단되고 오류가 발생합니다. 일단 획득되면, 자물쇠는 현재 거래의 나머지 부분에 대해 유지됩니다. (없음토토 캔 해제 테이블명령; 자물쇠는 항상 트랜잭션 종료시 릴리스됩니다.)
테이블을 참조하는 명령에 대해 자동으로 토토 캔을 획득 할 때postgresql항상 최소 제한적인 토토 캔 모드를 사용합니다.토토 캔 테이블보다 제한적인 토토 캔이 필요할 수있는 경우를 제공합니다. 예를 들어, 응용 프로그램이에서 트랜잭션을 실행한다고 가정합니다.Committed 읽기격리 수준이며 트랜잭션 기간 동안 테이블의 데이터가 안정적으로 유지되어야합니다. 이를 달성하려면공유쿼리 전에 테이블 위의 모드를 잠그십시오. 이렇게하면 동시 데이터 변경을 방지하고 테이블의 후속 읽기가 커밋 된 데이터에 대한 안정적인 견해를 보도록합니다..share토토 캔 모드와 충돌합니다Row Exclusive작가가 인수 한 토토 캔,토토 캔 테이블이름공유 모드성명서는 동시 소지자가 될 때까지 기다립니다Row Exclusive모드 토토 캔 커밋 또는 롤백. 따라서 자물쇠를 얻으면 커밋되지 않은 쓰기가 없습니다. 또한 토토 캔 장치를 해제 할 때까지 시작할 수 없습니다.
에서 거래를 실행할 때 유사한 효과를 달성하려면반복 가능한 읽기또는SERIALIZABLE격리 레벨,를 실행해야합니다토토 캔 테이블12631_12665select또는 데이터 수정 문. 에이반복 가능한 읽기또는SERIALIZABLE트랜잭션의 데이터 관점이 첫 번째 일 때 동결 될 것입니다select또는 데이터 수정 문이 시작됩니다. 에이토토 캔 테이블트랜잭션에서 나중에 동시 쓰기를 방지 할 것입니다. 그러나 거래 읽기가 최신 커밋 된 값에 해당하는지 확인하지는 않습니다.
이런 종류의 트랜잭션이 표에서 데이터를 변경하려면 사용해야합니다공유 ROW 독점대신 토토 캔 모드공유모드. 이를 통해 한 번에 하나의 트랜잭션 만 실행할 수 있습니다. 이 없으면 교착 상태가 가능합니다. 두 가지 거래가 모두 인수 할 수 있습니다공유모드, 획득 할 수 없습니다Row Exclusive실제로 업데이트를 수행하는 모드. (거래의 자체 자물쇠는 절대 충돌하지 않으므로 거래가 인수 할 수 있습니다Row Exclusive보유 할 때 모드공유모드 - 그러나 다른 사람이 보유하는 경우공유모드.) 교착 상태를 피하려면 모든 트랜잭션이 동일한 순서로 동일한 오브젝트에서 토토 캔을 획득하고 단일 객체에 여러 개의 토토 캔 모드가 관련되면 트랜잭션은 항상 가장 제한적인 모드를 먼저 얻어야합니다..
토토 캔 모드 및 토토 캔 전략에 대한 자세한 정보는 찾을 수 있습니다.PostgreSQL : 문서 : 9.6 : 명시 적 스포츠 토토 사이트.
토토 캔 할 기존 테이블의 이름 (선택적으로 스키마 자격). 만약에전용테이블 이름 앞에 지정되어 있으며 해당 테이블 만 잠겨 있습니다. 만약에전용는 지정되지 않았으며 테이블과 모든 후손 테이블 (있는 경우)이 잠겨 있습니다. 선택적으로,*테이블 이름 후에 지정하여 자손 테이블이 포함되어 있음을 명시 적으로 표시 할 수 있습니다.
명령토토 캔 테이블 A, B;토토 캔 테이블 A; 토토 캔 테이블 B;. 테이블은에 명시된 순서대로 1 단을 잠겨 있습니다.토토 캔 테이블명령.
토토 캔 모드는이 토토 캔이 충돌하는 부분을 지정합니다. 토토 캔 모드는에 설명되어 있습니다.PostgreSQL : 문서 : 9.6 : 명시 적 스포츠 토토 사이트.
토토 캔 모드가 지정되지 않은 경우액세스 독점가장 제한적인 모드가 사용됩니다.
이를 지정합니다토토 캔 테이블충돌 토토 캔 토토 캔 장치가 해제 될 때까지 기다리지 말아야합니다. 대기하지 않고 지정된 토토 캔 토토 캔 장치를 즉시 획득 할 수없는 경우 거래가 중단됩니다..
토토 캔 테이블 ... 액세스 공유 모드에서요구select대상 테이블의 권한.토토 캔 테이블 ... 행 독점 모드요구삽입, 업데이트, 삭제또는Truncate대상 테이블의 권한. 다른 모든 형태의토토 캔테이블 레벨 필요업데이트, 삭제또는Truncate특권.
토토 캔 테이블트랜잭션 블록 외부에서는 쓸모가 없습니다 : 토토 캔은 명세서의 완료에만 유지됩니다. 그러므로PostgreSQLIf 오류를보고합니다.토토 캔트랜잭션 블록 외부에서 사용됩니다. 사용PostgreSQL : 문서 : 9.6 : 토토and스포츠 토토 : 문서 : 9.6 : Commit(또는롤 토토 : 문서 : 9.6 : 롤백) 트랜잭션 블록을 정의하려면
토토 캔 테이블테이블 레벨 토토 캔 만 처리하므로 관련 모드 이름Row모든 오해입니다. 이러한 모드 이름은 일반적으로 잠긴 테이블 내에서로드 레벨 토토 캔을 획득하려는 의도를 나타내는 것으로 읽어야합니다. 또한,Row Exclusive모드는 공유 가능한 테이블 토토 캔 장치입니다. 모든 토토 캔 모드는와 동일한 의미론을 가지고 있음을 명심하십시오.토토 캔 테이블관련이있는 규칙에 따라 다릅니다. 실제 행 수준 토토 캔을 얻는 방법에 대한 정보는 참조섹션 13.3.2and the토토 캔 조항inselect참조 문서.
a공유삽입물을 외국 키 테이블에 수행 할 때 기본 키 테이블을 잠그십시오 :
작업 시작; 공유 모드의 토토 캔 테이블 필름; 필름에서 ID를 선택하십시오 여기서 name = '스타 워즈 : 에피소드 I- 팬텀 메나 스'; - 레코드가 반환되지 않은 경우 롤백을하십시오 films_user_comments 값에 삽입하십시오 (_id_, '좋아요! 너무 오래 기다리고있었습니다!'); 일을 커밋;
a공유 ROW 독점삭제 작업을 수행 할 때 기본 키 테이블을 잠그십시오 :
작업 시작; 공유 행 독점 모드의 토토 캔 테이블 필름; id가있는 Films_user_comments에서 삭제하십시오 (등급 <5 인 필름에서 ID를 선택); 등급 <5 인 필름에서 삭제; 일을 커밋;
없음토토 캔 테이블대신 사용하는 SQL 표준에서거래 설정거래에서 동시성 수준을 지정하려면PostgreSQL그것을지지합니다. 보다PostgreSQL : 문서 : 9.6 : 토토 설정자세한 내용.
제외액세스 공유, 액세스 독점및공유 업데이트 독점토토 캔 모드,PostgreSQL토토 캔 모드 및토토 캔 테이블구문은에있는 것과 호환됩니다.Oracle.