Syntax
------ 
LOCK TABLE[S]
 tbl_name [[AS] alias] lock_type
 [, tbl_name [[AS] alias] lock_type] ...
 [WAIT n|NOWAIT]
 
lock_type:
 READ [LOCAL]
 | [LOW_PRIORITY] WRITE
 | WRITE CONCURRENT
 
 
Description
----------- 
The lock_type can be one of:
 
Option | Description | 
 
READ | Read lock, no writes allowed | 
 
READ LOCAL | Read lock, but allow concurrent inserts | 
 
WRITE | Exclusive write lock. No other connections can read
or write to this table | 
 
LOW_PRIORITY WRITE | Exclusive write lock, but allow new
read locks on the table until we get the write lock. | 
 
WRITE CONCURRENT | Exclusive write lock, but allow READ
LOCAL locks to the table. | 
 
MariaDB enables client sessions to acquire table locks
explicitly for the
purpose of cooperating with other sessions for access to
tables, or to
prevent other sessions from modifying tables during periods
when a
session requires exclusive access to them. A session can
acquire or
release locks only for itself. One session cannot acquire
locks for
another session or release locks held by another session.
 
Locks may be used to emulate transactions or to get more
speed when
updating tables.
 
client session.
Table locks can be acquired for base tables or views. To use
you must have the LOCK TABLES privilege, and the SELECT
privilege for
each object to be locked. See GRANT
 
For view locking, LOCK TABLES adds all base tables used in
the view to the
set of tables to be locked and locks them automatically. If
you lock a table
explicitly with LOCK TABLES, any tables used in triggers are
also locked
implicitly, as described in Triggers and Implicit Locks.
 
the
current session.
 
WAIT/NOWAIT
 
Set the lock wait timeout. See WAIT and NOWAIT.
 
Limitations
 
experience crashes or locks when used with Galera.
 
innodb_table_locks system variable is set to 1 (the default)
and autocommit is set to 0 (1 is default). Please note that
no error message will be returned on LOCK TABLES with
innodb_table_locks = 0.
 
any. Also, starting a transaction always releases all table
locks acquired with LOCK TABLES. This means that there is no
way to have table locks and an active transaction at the
same time. The only exceptions are the transactions in
autocommit mode. To preserve the data integrity between
transactional and non-transactional tables, the GET_LOCK()
function can be used.
 
While a connection holds an explicit read lock on a table,
it cannot modify it. If you try, the following error will be
produced:
 
ERROR 1099 (HY000): Table 'tab_name' was locked with a
READ lock and can't be updated
 
While a connection holds an explicit lock on a table, it
cannot access a non-locked table. If you try, the following
error will be produced:
 
ERROR 1100 (HY000): Table 'tab_name' was not locked with
 
While a connection holds an explicit lock on a table, it
cannot issue the following: INSERT DELAYED, CREATE TABLE,
CREATE TABLE ... LIKE, and DDL statements involving stored
programs and views (except for triggers). If you try, the
following error will be produced:
 
ERROR 1192 (HY000): Can't execute the given command because
you have active locked tables or an active transaction
 
the following error will be produced on creation:
 
ERROR 1314 (0A000): LOCK is not allowed in stored procedures
 


URL: https://mariadb.com/kb/en/lock-tables/