我正在使用insert
语句将数据从oracle表单插入到数据库中,而不是一行行..它会自动插入两个行。?< / p>
我使用以下查询:
insert into xx_book_grp3 ( BOOK_ID,AUTHOR_ID,ISBN,PAGES,PUBLISHING_DATE,BOOK_TYPE,COST,BOOK_NAME) values (xxtrn_grp3_book_id.nextval,:XX_BOOK_GRP3.AUTHOR_ID,:XX_BOOK_GRP3.ISBN,:XX_BOOK_GRP3.PAGES,:XX_BOOK_GRP3.PUBLISHING_DATE,
:XX_BOOK_GRP3.BOOK_TYPE,
:XX_BOOK_GRP3.COST,
:XX_BOOK_GRP3.BOOK_NAME);
commit;
答案 0 :(得分:0)
尝试此操作以防止重复插入: - 我认为你可以检查author_id上的现有记录,只有isbn甚至isbn就足够了:
Declare
v_count number;
Begin
Select count(*) into v_count from xx_book_grp3
where author_id = :xx_book_grp3.author_id and isbn = :xx_book_grp3.isbn;
if v_count = 0 then
insert into xx_book_grp3 ( BOOK_ID,AUTHOR_ID,ISBN,PAGES,PUBLISHING_DATE,BOOK_TYPE,COST,BOOK_NAME) values (xxtrn_grp3_book_id.nextval,:XX_BOOK_GRP3.AUTHOR_ID,:XX_BOOK_GRP3.ISBN,:XX_BOOK_GRP3.PAGES,:XX_BOOK_GRP3.PUBLISHING_DATE,
:XX_BOOK_GRP3.BOOK_TYPE,
:XX_BOOK_GRP3.COST,
:XX_BOOK_GRP3.BOOK_NAME);
commit;
end if;
end;
答案 1 :(得分:0)
首先,确保您的表中有一个主键。请注意:PK可以消除重复。
我还建议检查您的表单是否有同一个表的插入。 您可能拥有数据库触发器或数据库过程,该过程在任何表单触发器中按名称调用。