二者是没有重复的,但是为什么插值,插不进呢。

handsome1234 2015-08-31 07:54:23
表结构:
Create table YHJ_BARCODES as select s.* from BARCODES where 1=0
插值插不进:

INSERT
INTO BARCODES
SELECT DISTINCT t.*
FROM YHJ_BARCODES T WHERE TRIM(T.COM_ID)||TRIM(T.BAR_CODE) NOT IN (SELECT TRIM(DD.COM_ID)||TRIM(DD.BAR_CODE) FROM BARCODES DD )

报错:
ORA-00001: 违反唯一约束条件 .PK_BARCODES
查看定义:
CREATE UNIQUE INDEX PK_BARCODES
ON BARCODES (COM_ID, BAR_CODE)
)

ALTER TABLE BARCODES ADD
(
CONSTRAINT PK_BARCODES
PRIMARY KEY ( COM_ID, BAR_CODE )
);


SELECT YB.BAR_CODE,BAR.BAR_CODE FROM YHJ_BARCODES YB LEFT JOIN BARCODES BAR ON TRIM(YB.BAR_CODE)=TRIM(BAR.BAR_CODE)

结果行数是 YHJ_BARCODES的行数,左边列有值,右边BAR.BAR_CODE ,没有值。
我想这应该证明,二者是没有重复的,但是为什么插值,插不进呢。
oracle 11.2.0.4
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
handsome1234 2015-08-31
  • 打赏
  • 举报
回复
最近加班真是加残了,这个问题我之前问过,哪位高手说过 是YHJ_BARCODES有重复的行, 确实如此,我都忘记了。
  • 打赏
  • 举报
回复
你插值用的TRIM(T.COM_ID)||TRIM(T.BAR_CODE),那你比较也应该用这个吧

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧