阻止Mysql查询直到更新

时间:2013-05-28 18:56:27

标签: php mysql

我很好奇,有没有办法让查询块(等待)直到插入新行?

1 个答案:

答案 0 :(得分: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'的查询都将推迟到插入完成。

  2. 重复单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');
    ...
    

    情况下,表格在语句之间解锁,正确“锁定”表格的唯一方法是使用transaction。 [注意:myISAM不支持事务,您必须使用InnoDB或BDB表。即:

    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;