Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除并将新数据加载到事务内的MySQL表中_Mysql - Fatal编程技术网

删除并将新数据加载到事务内的MySQL表中

删除并将新数据加载到事务内的MySQL表中,mysql,Mysql,我有一个MySQL表,其中的内容需要定期替换为新的XML数据。这不是一个巨大的数据量(以兆字节为单位),下面的语句执行得相当快 truncate table my_table; load xml local infile path_to_file into table my_table; 我希望刷新发生在事务内部,以便数据读取将等待,而不会得到空结果。将上述声明放在交易中是实现这一点的正确方式吗?有什么我需要关心的吗 编辑: 经过进一步研究,我发现了另一种方法: create table

我有一个MySQL表,其中的内容需要定期替换为新的XML数据。这不是一个巨大的数据量(以兆字节为单位),下面的语句执行得相当快

truncate table my_table; 

load xml local infile path_to_file 
into table my_table;
我希望刷新发生在事务内部,以便数据读取将等待,而不会得到空结果。将上述声明放在交易中是实现这一点的正确方式吗?有什么我需要关心的吗

编辑:

经过进一步研究,我发现了另一种方法:

create table my_table_2 like my_table;

load xml local infile path_to_file 
into table my_table_2;

rename table my_table to backup_table, my_table_2 to my_table;

drop table backup_table;

这种方法有什么问题吗?这两种方法中哪一种更好?

截断事务中的表会导致隐式提交:@MarcB使用“delete from”语句怎么样?我担心的是,主键列是一个自动增量字段,它可能会失控。如果它只有几兆字节的数据(可能仍然是大量记录),您最好从1=1的表中删除,然后重置自动增量值。谢谢!你能把密码写在回信里让我接受吗?我需要“where 1=1”吗?我不能只用“从我的表中删除”吗?您还看到了其他问题吗?一些mysql版本启用了“i_am_a_dummy”模式(是的,这是一个真实的设置),可以阻止没有where子句的删除/更新查询。你可以不用它试试,也许它会有用的。