繁体   English   中英

我需要截断一个表,然后插入新的寄存器,但用户看不到

[英]I need to truncate a table then insert new register, but users cant see this

这是一个很难理解的问题,但是,我需要截断一个表,同时插入新的寄存器,但是在此过程中,网站访问者看不到网站内容没有任何内容,我该如何在SQL中像--single-transation在新的缓存出现之前有“缓存的缓存”之类的东西吗?

使用重命名表切换2个表。

与ALTER TABLE不同,RENAME TABLE可以在单个语句中重命名多个表:

  • 准备新表the_table_next (可能需要很长时间)
  • RENAME TABLE the_table TO the_table_prev, the_table_next To the_table; (操作非常快)
  • 删除/截断表the_table_prev

执行RENAME TABLE时,不能有任何锁定的表或活动的事务。 在满足该条件的情况下,原子地完成重命名操作; 重命名过程中,没有其他会话可以访问任何表。

如果在RENAME TABLE期间发生任何错误,则该语句将失败并且不会进行任何更改。

注意 :

使用alter table rename您需要使用2个命令==> 2个不同的事务(DDL指令)

rename table => 单笔交易

如果可以截断该表,则可以假定该表没有键限制。 如果是这样,我会:

  • 1)假设原始表是Table1,我将使用完全相同的结构创建Table2。
  • 2)然后我将用我需要的任何东西填充Table2
  • 3)之后,在一次事务中,我将Table1的名称更改为Table3,将Table2的名称更改为Table1。
  • 4)最后,我将满足我对Table3(最初是Table1)的需要。

在MySQL中,您可以使用以下方式重命名表:

ALTER TABLE table_name
   RENAME TO new_table_name;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM