LOCK TABLES,锁表(或者视图)权限。
可以锁住那些你拥有select权限的表,以防止其他session访问或者修改这个表。
如果锁住视图,那么视图的所有基表都被锁住。
如果锁住的表上有触发器,那么和这个触发器所有相关的表都被锁住。
很明显,临时表由于其固有特性,lock table 临时表实际是没有意义的,虽然不报错,但实际也被忽略的。
D:\temp>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.7.11-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> drop user if exists 'ut01'@'%';
Query OK, 0 rows affected (0.09 sec)
mysql> drop user if exists 'ut02'@'%';
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> show warnings;
+-------+------+---------------------------------+
| Level | Code | Message |
+-------+------+---------------------------------+
| Note | 3162 | User 'ut02'@'%' does not exist. |
+-------+------+---------------------------------+
1 row in set (0.00 sec)
mysql> create user 'ut01'@'%' identified by '20127163';
Query
可以锁住那些你拥有select权限的表,以防止其他session访问或者修改这个表。
如果锁住视图,那么视图的所有基表都被锁住。
如果锁住的表上有触发器,那么和这个触发器所有相关的表都被锁住。
很明显,临时表由于其固有特性,lock table 临时表实际是没有意义的,虽然不报错,但实际也被忽略的。
要锁住某张表的前提是要拥有表上select 权限。
lock table有如下两种表达方式:
lock table xxx read,只读方式锁住xxx,该表只能被select,不能被修改。如果在lock时,该表上存在事务,则lock语句挂起,直到事务结束。多个会话可以同时对表执行该操作。
lock table xxx write,读写方式锁住xxx,lock table的会话可以对表xxx做修改及查询等操作,而其他会话不能对该表做任何操作,包括select也要被阻塞。
可以同时锁住多个表。
D:\temp>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.7.11-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> drop user if exists 'ut01'@'%';
Query OK, 0 rows affected (0.09 sec)
mysql> drop user if exists 'ut02'@'%';
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> show warnings;
+-------+------+---------------------------------+
| Level | Code | Message |
+-------+------+---------------------------------+
| Note | 3162 | User 'ut02'@'%' does not exist. |
+-------+------+---------------------------------+
1 row in set (0.00 sec)
mysql> create user 'ut01'@'%' identified by '20127163';
Query