• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 1. 데이터 정의 문
    2. 데이터 조작 문
    3. MySQL 트랜잭션과 잠금 문
    1. START TRANSACTION, COMMIT 및 ROLLBACK 구문
    2. 롤백 할 수없는 문
    3. 암시 적 커밋을 발생시키는 문
    4. SAVEPOINT, ROLLBACK TO SAVEPOINT 및 RELEASE SAVEPOINT 구문
    5. LOCK TABLES 및 UNLOCK TABLES 구문
    1. 테이블 잠금과 트랜잭션의 통신
    2. LOCK TABLES 및 트리거
    3. 테이블 잠금의 제한 및 조건
    6. SET TRANSACTION 구문
    7. XA 트랜잭션
    4. 복제 문
    5. Prepared Statements위한 SQL 구문
    6. MySQL 복합문 구문
    7. 데이터베이스 관리 문
    8. MySQL 유틸리티 문
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

13.3.5.2 LOCK TABLES 및 트리거

LOCK TABLES 에 의해 명시 적으로 테이블을 잠근 경우 트리거에서 사용되는 테이블도 모두 암묵적으로 잠겨 있습니다.

  • 이러한 잠금은 LOCK TABLES 문에 의해 명시 적으로 취득하는 락과 동시에 취득됩니다.

  • 트리거에서 사용되는 테이블에 대한 잠금은 테이블이 읽기 전용으로 사용되고 있는지에 따라 다릅니다. 읽기 전용으로 사용되는 경우는 읽기 잠금 충분합니다. 그렇지 않은 경우는 쓰기 잠금이 사용됩니다.

  • 테이블이 LOCK TABLES 에 의해 읽기에 대해 명시 적으로 잠겨 있지만, 트리거 내에서 변경 될 가능성이 있기 때문에 쓰기에 잠글 필요가있는 경우는 읽기 잠금 대신 쓰기 락이 취득 됩니다. (즉, 트리거에서 테이블 표시를 위해 필요한 암시 쓰기 잠금은 테이블에 대한 명시적인 읽기 잠금 요청이 쓰기 잠금 요청으로 변환됩니다.)

다음 문을 사용하여 2 개의 테이블 t1 과 t2 를 잠글합니다.

 LOCK TABLES t1 WRITE, t2 READ;

t1 또는 t2 에 트리거가 포함되어있는 경우 해당 트리거 내에서 사용되는 테이블도 잠겨 있습니다. t1 에 다음과 같이 정의 된 트리거가 포함되어 있다고합니다.

 CREATE TRIGGER t1_a_ins AFTER INSERT ON t1 FOR EACH ROW
 BEGIN
   UPDATE t4 SET count = count + 1
       WHERE id = NEW.id AND EXISTS (SELECT a FROM t3);
   INSERT INTO t2 VALUES (1, 2);
 END;

LOCK TABLES 명령문의 결과로 t1 과 t2 이 문 나타나기 때문에 잠겨 있습니다. 또한 t3 과 t4 는 트리거에서 사용되는 위해 잠겨 있습니다.

  • t1 은 WRITE 잠금 요청마다 쓰기에 잠겨 있습니다.

  • t2 는 요청이 READ 락에 대한 것이었다해도, 쓰기에 잠겨 있습니다. 이것은 트리거에서 t2 에 삽입되기 때문에 발생합니다. 따라서 READ 요청은 WRITE 요청으로 변환됩니다.

  • t3 는 트리거 내에서 읽을뿐이기 때문에 읽기에 잠겨 있습니다.

  • t4 는 트리거에서 업데이트 될 가능성이 있기 때문에 쓰기에 잠겨 있습니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved