我有一张桌子
CREATE TABLE `uli` (
`id` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
表格应始终在一行中包含一个值。但它可以经常改变。我想做一个选择,锁定表用于其他连接,更新值和解锁。 例如,以下代码非常出色:
LOCK TABLES uli WRITE;
SELECT * FROM uli;
UPDATE uli SET id=id+1;
UNLOCK TABLES;
虽然第一次连接没有解锁,但所有其他连接都会等待,只有在解锁后才能看到新值。这正是我想要的。它是否存在一些更优雅的解决方案?使用MyIsam或Innodb表格是否重要?
答案 0 :(得分:0)
您正在锁定写入,这意味着选择在更新之前仍会看到旧值。你也没有对你的选择做任何事情。如果您使用InnoDB和SERIALIZABLE隔离级别,您只需要更新语句。