首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

insert into 插入数据时是怎么忽略掉异常

2013-11-25 
insert into 插入数据时是如何忽略掉错误有一张表 ,如下所示create table test (xh char(6),--人员序号wor

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 的选项
[解决办法]

引用:
mysql  有  insert ignore into  这个关键字
他这样,当违背了唯一约束的时候~就会直接跳过,不会报错。
不知道  ms sql 是否有这样的关键字


sql server没有这个。

在sql server 就把主键删掉把,就不会报错了。
[解决办法]
引用:
Quote: 引用:

你要这样的话只能把主键取消

就是的,我在试看看,谢谢


另外,如果有外键 引用这个表的主键,可能会导致,主键删除不掉,这个时候需要先把外键给删除掉。

热点排行