mysql 如何将记录从一个表移到另一个表
在mysql中将记录从一个表移动到另一个表中,通常的程序是:首先将记录从源表中复制到目标表中,然后删除源表中的数据。这个过程中要注意的是选择并插入语句和删除语句的条件要完全相符。
INSERT INTO table2 SELECT * FROM table1 WHERE t < CURDATE();
DELETE FROM table1 WHERE t < CURDATE();
以上两条mysql指令中,insert和delete所附加的条件并不是完全一致。比如说明天是30号,我们在29号23点59秒时正巧运行到这个脚本,那么可能的结果是记录并没有通过插入指令进入到table2表中,而在delete指令中则会将记录删除掉。虽然这样的情况有着极大的偶然性,但对于很多安全性要求高的程序来说,便不安全,会造成很多数据没有从table1转移到table2中便被删除了。因此安全的方法是:
SET @date_point = CURDATE();
INSERT INTO table2 SELECT * FROM table1 WHERE t < @date_point;
DELETE FROM table1 WHERE t < @date_point;
这样才能确保insert和delet语句所运用的条件是完全一致的。
在mysql中将记录从一个表移动到另一个表中,通常的程序是:首先将记录从源表中复制到目标表中,然后删除源表中的数据。这个过程中要注意的是选择并插入语句和删除语句的条件要完全相符。
INSERT INTO table2 SELECT * FROM table1 WHERE t < CURDATE();
DELETE FROM table1 WHERE t < CURDATE();
以上两条mysql指令中,insert和delete所附加的条件并不是完全一致。比如说明天是30号,我们在29号23点59秒时正巧运行到这个脚本,那么可能的结果是记录并没有通过插入指令进入到table2表中,而在delete指令中则会将记录删除掉。虽然这样的情况有着极大的偶然性,但对于很多安全性要求高的程序来说,便不安全,会造成很多数据没有从table1转移到table2中便被删除了。因此安全的方法是:
SET @date_point = CURDATE();
INSERT INTO table2 SELECT * FROM table1 WHERE t < @date_point;
DELETE FROM table1 WHERE t < @date_point;
这样才能确保insert和delet语句所运用的条件是完全一致的。
作者:noel@ECMall Ecmall二次开发 - PHP技术-
地址:http://www.laohucheng.com/post/274/
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!
Tags: mysql一个表移到另一个表 引用(0)
学习网站和资料整理
iconv错误解决办法
2009
16:42
166
0


