insert into 插入数据时是如何忽略掉错误
有一张表 ,如下所示
create table test
(
xh char(6),--人员序号
worktime datetime, --打卡时间
machineid char(2) --考勤机编号
)
xh 与 worktime 为联合主键
每次从考勤机中将考勤时间下载下来,每次下载完成后,考勤机中的记录不一定会进行清空,
所以就会导致有些考勤时间在数据库会重复存在,在执行插入操作时就会失败(主键重复了)
现在的方法是在程序中判断是否有重复的记录,但是这样的效率太低,数据量太大,
那么如何忽略掉这个错误,继续执行后面的插入语句,
[解决办法]
你加判断就是为了去除重复,那不管错误继续执行不就失去了原来的意义吗?主键、唯一约束都能避免,不过一样有开销。
[解决办法]
如果要更新已有的记录,很麻烦(或者说效率很低),我以前用类似的方法做过,我用INSERT INTO ... VALUE ...一条一条插入, 检错时如果发现是重复主键错误,则先删除这条记录, 再resume, 即重新插入.
慢就慢在删除时又整个表找了一遍,我试了四千条重复的插入,用insert into ... select到一个新表,只要几秒钟,而用先删除重复再插入的方法, 时间约用了1分钟!
[解决办法]
建议楼主用另外一个临时固定表(tblTemp)来存储考勤机上的打卡记录
先从考勤机里下载到tblTemp(下载前清空此表)后再将其未重复的记录插入到你的打卡记录表test里去
[解决办法]
CREATE INDEX 语法中有:IGNORE_DUP_KEY 的选项
[解决办法]