我很好奇,有没有办法让查询阻塞(等待)直到插入新行?
问问题
1017 次
1 回答
1
我可以看到有两种情况导致您提出这个问题:
大批量
INSERT
语句,即:INSERT INTO mytable (id, name, date) VALUES (1, 'Tom', '2013-01-31'), (2, 'Dick', '2013-02-28'), (3, 'Harry', '2013-03-31'), ...
在这种情况下,MySQL 会在内部进行锁定,因此您无需执行任何操作。任何需要使用“mytable”的查询将被推迟到插入完成。
重复的单一
INSERT
陈述,即:INSERT INTO mytable (id, name, date) VALUES (1, 'Tom', '2013-01-31'); INSERT INTO mytable (id, name, date) VALUES (2, 'Dick', '2013-02-28'); INSERT INTO mytable (id, name, date) VALUES (3, 'Harry', '2013-03-31'); ...
在这种情况下,表在语句之间解锁,正确“锁定”表的唯一方法是使用事务。[注意:myISAM 不支持事务,您必须使用 InnoDB 或 BDB 表。IE:
START TRANSACTION; INSERT INTO mytable (id, name, date) VALUES (1, 'Tom', '2013-01-31'); INSERT INTO mytable (id, name, date) VALUES (2, 'Dick', '2013-02-28'); INSERT INTO mytable (id, name, date) VALUES (3, 'Harry', '2013-03-31'); ... COMMIT;
于 2013-05-28T19:15:09.990 回答