【发布时间】:2016-09-15 00:21:50
【问题描述】:
我有一个表 xx_photo,我必须在其中插入来自 xx_people_ph 表的数据。
xx_photo :
IMAGE_ID NOT NULL NUMBER(15)
PARENT_ID NOT NULL NUMBER(15)
TABLE_NAME NOT NULL VARCHAR2(30)
IMAGE NOT NULL BLOB
DATA_FLAG VARCHAR2(2)
HIST_DATE DATE
每当我们将数据插入 xx_photo 时,hist_date 将更新为 sysdate,data_flag 将更新为“Y”。
xx_people_ph
IMAGE_ID NOT NULL NUMBER(15)
PARENT_ID NOT NULL NUMBER(15)
TABLE_NAME NOT NULL VARCHAR2(30)
IMAGE NOT NULL BLOB
我现在正在使用:
insert into xx_photo
SELECT IMAGE_ID ,
PARENT_ID ,
Table_Name ,
Image ,
'Y',
Sysdate
FROM Per_Images Img_Tab;
In this statement only , i want to check if the record for same parent_id exists
在 xx_photo 中。如果它已经存在,那么数据不应该被插入到这个表中。
如何修改此查询以仅插入 xx_photo 表中已不存在的记录
【问题讨论】:
-
找到存在的唯一组合是什么
-
parent_id 与 xx_people_ph image_id 有什么关系?如果它不存在你想要发生什么,只是不插入记录抛出错误,为你插入它?如果您只想在父项不存在时停止插入,一种方法是使用 INNER JOIN 来查看它是否存在
-
两个 parent_id 在两个表中都是唯一的 id
标签: sql insert oracle-sqldeveloper