MySQL-锁表问题

MySQL-锁表问题,mysql,sql,Mysql,Sql,有人能帮助我(通过提供SQL查询)如何锁定数据库表,这样就没有人可以读取、写入或更新(如果可能!)?快速且肮脏: 如果要锁定该表,请重命名该表: RENAME TABLE old_table TO backup_table 完成后,将其重新命名: RENAME TABLE backup_table TO old_table 当然,您必须捕获应用程序中的错误,并将“表'tbl_name'不存在”处理为“拒绝访问”。@MitchWheat,我希望这样做,因为在我的应用程序中,我希望用户面临脏读和

有人能帮助我(通过提供SQL查询)如何锁定数据库表,这样就没有人可以读取、写入或更新(如果可能!)?

快速且肮脏: 如果要锁定该表,请重命名该表:

RENAME TABLE old_table TO backup_table
完成后,将其重新命名:

RENAME TABLE backup_table TO old_table

当然,您必须捕获应用程序中的错误,并将“表'tbl_name'不存在”处理为“拒绝访问”。

@MitchWheat,我希望这样做,因为在我的应用程序中,我希望用户面临脏读和脏写问题。我试图通过共享模式和排他模式锁来解决问题,但是它会造成死锁问题。好的,您不能阻止会话从表中读取(无论如何,在MySQL中不是这样,除非删除特权或关闭mysqld。@你说得对-但他可以在应用程序级别上完成。我可以在进程级别使用互斥来解决它。因为,其他方式似乎有点讨厌。如果在重命名时访问表,你什么都不说。我的意思是,你不会那么你能重新命名它吗?一个“选择”不会造成伤害-唯一可能的争用条件是如果两个线程同时尝试重命名它-但是您可以通过同步重命名表的方法轻松地处理它。对,但我实际上谈论的是写访问,比如更新、插入或删除。OP想要阻止任何类型的访问,包括写访问,这对我来说是非常重要的ANS(写访问)是可能的,这意味着当ReNeMe语句发布时,有人可能正在编写中间。