我正在运行一个脚本,该脚本将触发一个选择查询并将结果插入表中。
选择查询
select distinct a.child child_id, a.parent parent_id from cat a, par b WHERE a.child=b.catentid and b.catenttype_id='Product' and a.reltype_id='PRODUCT_ITEM'
并插入到创建为
的表中create table TI_CAT_0 ( child_id NUMBER not null,parent_id NUMBER not null,PRIMARY KEY (child_id))
但是当我将脚本作为“SYS_C00187123”运行时,我得到一个唯一的键约束违规,我在all_constraints表中检查了这个约束名,只在TI_CAT_0表中检查了它。
由于我使用了distinct命令,我不确定为什么会出现这种违规行为。它是一个Oracle DB。
答案 0 :(得分:1)
假设您从头开始创建TI_CAT_0
表并从SELECT
查询中插入记录,那么您无意中多次插入同一记录,或者您的初始查询返回多行每个child_id
。如果是这种情况,则应运行此查询以查看初始查询是否返回重复的child_id
值。您的查询在撰写时将返回child_id
和parent_id
的唯一组合。您可以使用以下SQL检查多个父项是否与单个子项相关联:
select
a.child,
count(a.parent) as parent_count
from
cat a
join par b
on a.child = b.catentid
where
b.catenttype_id='Product'
and a.reltype_id='PRODUCT_ITEM'
group by
a.child
having
count(a.parent) > 1
order by 2 desc
结果(如果有)将是与多个child_id
值相关联的所有parent_id
值。