簡體   English   中英

我正在使用insert語句將數據從oracle表單插入數據庫,但是它插入2行而不是1行

[英]i am using insert statement to insert data from oracle forms to database but its inserting 2 rows instead of one

我使用insert語句插入從Oracle表格,數據庫數據,而不是一行 ..其插入2個自動行..?

我正在使用以下查詢:

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;

嘗試這樣做以防止重復插入:-我認為您可以檢查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;

首先,請確保您的表中有一個主鍵。 請注意:PK消除了重復。

我還建議檢查您的表單是否有同一張表的任何插入內容。 您可能有一個數據庫觸發器或一個數據庫過程,該過程可以通過任何形式的觸發器中的名稱來調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM