【发布时间】:2018-07-20 13:08:27
【问题描述】:
我有一张存储敏感数据的表,需要注意的是,只有一个会话能够读取/写入特定行。
我的表有 2 个列 id (int) 主要 数量(int)索引
所以我想锁定表格但只有一行 像
LOCK TABLEROWS `mytable` WRITE WHERE `id` = 1
我使用 pdo 和 startTransaction 不会阻止其他会话在那个时候读/写
我阅读了 InnoDB 文档,但没有让它运行
编辑:
$_PDO->exec('START TRANSACTION');
$_PDO->query('SELECT * FROM `currency` WHERE `id` = '.$userid.' FOR UPDATE');
//maybe do update or not check if
$_PDO->exec('COMMIT');
所以这就是我需要做的一切?
【问题讨论】:
-
使用意向锁,例如
SELECT ... FOR UPDATEdev.mysql.com/doc/refman/5.5/en/… -
但这不会阻止读取吗?这就是我需要的
-
请检查更新