LOCK TABLES 명령을 사용하여 여러 테이블 잠금을 달성할 수 있습니다. 구문은 다음과 같습니다 -
LOCK TABLES yourTableName1 WRITE; LOCK TABLES yourTableName2 WRITE; LOCK TABLES yourTableName3 WRITE; LOCK TABLES yourTableName4 WRITE; . . . N;
테이블 잠금은 트랜잭션 안전하지 않으며 두 번째 테이블 잠금을 시도하기 전에 먼저 활성 트랜잭션을 암시적으로 커밋합니다.
OrderDemo 테이블이 있다고 가정해 보겠습니다 −
mysql> create table OrderDemo -> ( -> OrderId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> OrderPrice int, -> OrderDatetime datetime -> ); Query OK, 0 rows affected (0.66 sec)
다음은 OrderDemo 및 utfdemo 테이블을 잠그는 쿼리입니다. utfdemo는 이미 샘플 데이터베이스에 있습니다. 쿼리는 다음과 같습니다 -
mysql> LOCK TABLES OrderDemo WRITE; Query OK, 0 rows affected (0.03 sec) mysql> LOCK TABLES utfdemo WRITE; Query OK, 0 rows affected (0.07 sec)
이제 세션에 대한 테이블을 잠급니다. 테이블을 생성하려고 하면 오류가 발생합니다.
오류는 다음과 같습니다 -
mysql> create table LockTableDemo -> ( -> UserId int, -> UserName varchar(10) -> ); ERROR 1100 (HY000): Table 'LockTableDemo' was not locked with LOCK TABLES mysql> create table UserIformation -> ( -> UserId int, -> UserName varchar(10) -> ); ERROR 1100 (HY000): Table 'UserIformation' was not locked with LOCK TABLES
이 문제를 해결하려면 MySQL을 다시 시작해야 합니다.