日期:2014-05-17  浏览次数:20724 次

通过链接服务器批写入oracle时遇到的问题
问题描述:
一端是SQL SERVER2005数据库,另一边是ORACLE 11 数据库,SQLSERVER通过链接服务器方式与ORACLE连接并且传入数据至ORACLE中的表T1,T1中的列F1的约束规则为唯一且不可重复的。

经过实际操作发现,一条一条数据上传至T1就不会有问题,如下:
INSERT INTO OPENQUERY(LINK_SERVER,'SELECT F1,F2 FROM T1 WHERE 1>0')VALUES(@V1,V2)

但批上传时则时常出现提示:“违反唯一约束条件t1_f1_pk”的出错信息。而且更为吊诡的是:不是每次都出错,有时也可正确保存。
批上传SQL如下:

INSERT INTO OPENQUERY(LINK_SERVER,'SELECT F1,F2 FROM T1 WHERE 1>0')
SELECT F1,F2 FROM T_0

我反复检查过SQLSERVER中的T_0表,F1列本身就已被我设置为自增列,不可能有重复值啊,而且也与ORACLE中的T1表的F1列没有重复值。但为什么会出现上述出错提示呢?
----------------------------
我对ORACLE的批处理机制不是很明白,希望有经验的兄弟指点一下!

------解决方案--------------------
估计是你的目标表(Oracle数据库中的表的递增列是用 序列+触发器实现的。
这个时候,如果你“并行插入”的话,很可能会出错!