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



这很难理解,但是,我需要截断的桌子,同时插入新寄存器,但是在此过程中,网站访问者看不到任何东西都没有任何内容网站内容,我该如何在sql中这样做 - 单个传输,它在新的寄存器之前有类似" cached寄存器"的东西?

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

重命名表(与Alter Table不同)可以在单个语句中重命名多个表:

  • 准备新表the_table_next (可以是一个长期操作)
  • RENAME TABLE the_table TO the_table_prev, the_table_next To the_table; (非常快速的操作)
  • drop/truncate表the_table_prev

执行重命名表时,您无法拥有任何锁定表或活动交易。在满足该条件的情况下,重命名操作是原子上完成的;重命名时,没有其他会话可以访问任何表。

如果在重命名表中发生任何错误,则语句失败且未进行更改。

注意:

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

使用rename table => 单人交易

如果您可以截断表,则可以假设该表上没有密钥限制。如果是这样,我会:

  • 1)假设原始表是table1,我将创建具有完全相同结构的table2。
  • 2)然后我将用我需要的任何东西填充table2
  • 3)之后,在一次交易中,我将表1的名称更改为table3,table2的名称为table1。
  • 4)最后,我对table3(最初是table1)所需的一切。

在MySQL中,您可以使用:

重命名表
ALTER TABLE table_name
   RENAME TO new_table_name;

相关内容

  • 没有找到相关文章

最新更新