其实也不难,从MySQL手册里就能找到方法,那就是:同时锁定2个表,不允许写入,然后对调表名。
我们通常只锁一个表,那么同时锁两个表应该怎么做呢,可以用下面的方法:
LOCK TABLES t1 WRITE, t2 WRITE; ALTER TABLE t1 RENAME TO t3; ALTER TABLE t2 RENAME TO t1; ALTER TABLE t3 RENAME TO t2; UNLOCK TABLES;
看到了吧,其实很简单,两个表同时加表级写锁,然后用ALTER语法改名就可以了。
废话挺多的,谢谢各位客官耐心看完 :)
This post has already been read 8804 times!
葉老師,用rename table t1 to tmp, t2 to t1, tmp to t2 也是一個原子操作,而且語法上更方便~ http://dev.mysql.com/doc/refman/5.5/en/rename-table.html
感谢提醒呀 :)