我遇到了一些问题,与表锁定。我在交易中锁定了一定数量的表。LOCK TABLES t1 READ, t2 READ, t3 READ, t4 READ,t5 READ,t6 READ,t7 READ;
在读取它的ok时,但是当我试图写入/更新这个表时,它显示的是错误的表't1‘是用读锁锁定的,不能更新
但是我从来没有锁定过用于写的表,我必须用更新的值写入这些表。
我的目标是需要选择和更新行,而其他人在进程完成之前不应该与上面的表交互。
非常感谢您的解决方案!
发布于 2015-01-09 14:38:03
来自mysql文档
锁定获取规则在当前会话中获取表锁,请使用locks语句。可以使用下列锁类型:
读取本地锁:
持有锁的会话可以读取表(但不能写入表)。
发布于 2016-03-16 09:04:28
MariaDB [test]> lock table super1 read;
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> select * from super1;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
| 7 |
+----+
6 rows in set (0.00 sec)
MariaDB [test]> insert into super1 VALUE(10);
ERROR 1099 (HY000): Table 'super1' was locked with a READ lock and can't be updted其他会话也可以选择
MariaDB [test]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> lock table super1 write;
Query OK, 0 rows affected (0.00 sec)其他会话无法选择
MariaDB [test]> insert into super1 VALUE(10);
Query OK, 1 row affected (0.00 sec)
MariaDB [test]> insert into super1 VALUE(11);
Query OK, 1 row affected (0.00 sec)
MariaDB [test]> unlock tables;
Query OK, 0 rows affected (0.00 sec)https://stackoverflow.com/questions/27862834
复制相似问题