Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 여러 테이블을 잠그는 방법은 무엇입니까?

<시간/>

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을 다시 시작해야 합니다.