oracle批量更新時,提示 違反唯一約束條件 ,如何判斷是

時間 2021-10-27 04:39:39

1樓:匿名使用者

僅僅更新過去是不行的,必須要確定哪一條出錯,然後修改這一條的資訊.

你的意思是說既要更新大量資料,還要對重複的資料進行修改?

2樓:仗劍折花

我覺得 那個病人資訊表 與 yytj.exam_staff 可能有重複記錄,你得先換出重複記錄出來,再更新,另外你的語句上邊也加上條件g.yktzh is not null

如下:update 病人資訊 h set 就診卡號=(select 'y'||g.yktzh from yytj.exam_staff g

where h.病人id=g.exam_staffid and g.yktzh is not null)

where 病人id in (select a.exam_staffid from yytj.exam_staff a

where a.yktzh is not null)

另外如果你想在更新的時候找出具體的行出了問題可參考下邊的方法:

declare

-- local variables here

i integer;

numrows integer;

begin

-- test statements here

for cur_1 in (select 'y' || g.yktzh as 就診卡號, g.exam_staffid as 病人id

from yytj.exam_staff g

where g.yktzh is not null) loop

begin

numrows := numrows + 1;

update update 病人資訊 h

set 就診卡號 = cur_1.就診卡號

where h.病人id = cur_1.病人id;

exception

when others then

dbms_output.put_line(sqlerrm || ' 就診卡號:' || cur_1.就診卡號 ||

' 病人id:' || cur_1.病人id);

end;

if numrows > 1000 then

commit;

numrows := 0;

end if;

end loop;

if numrows > 0 then

commit;

end if;

end;

3樓:匿名使用者

兩種方法:

1.在每個update語句後面寫上commit;

2.快速排除法:取1/2法;

違反唯一約束條件 oracle怎麼解決

4樓:匿名使用者

反唯一約束條件?應該是主鍵重複吧。

解決的方法兩種方法:一是處理掉重複的資料,二是修改約束條件如果是oracle的import命令,可以設定引數,採用忽略錯誤匯入的方式匯入,或者無條件覆蓋原資料。

把以前的資料清空再匯入。

關於出現違反唯一約束條件錯誤

5樓:手機使用者

1.輸入了相同的關鍵字 2.記錄已經插入了,你還要執行一遍相同插入,sql指令碼,查詢該句是否存在相同的另一句。 3.insert之後打了一個"/"

希望採納

ora-00001: 違反唯一約束條件 (cds.pk_dum_dimension),這個問題具體應該這麼弄?

6樓:名字裡也有你

查詢dum_dimension序列最大值的下一個值,把查到的值新增到相應序列的起始值即可。

oracle中唯一約束可以為

版空,並權且空值可以重複,並不是空只能為一次,可以去測試。

主鍵約束 是唯一約束和不能為空。兩者最主要的區別就是主鍵約束不能為空,而unique可以為空並且空值可以重複。

根據錯誤提示,是是因為插入了相同的值。這個是違反約束的。

7樓:匿名使用者

唯一約來束的欄位在插入資料時不源能出現重複,bai可以du為空,但是空也只能

zhi出現一次。比如說學dao生的學號設有唯一約束,那麼就不能出現兩個學號相同的學生,如果插入資料時出現有兩條以上學生資訊的學號相同,就會出現你說的這個問題。資料庫表的主鍵就帶有唯一約束,所以主鍵是不能重複的。

8樓:匿名使用者

還是我來來解釋一下吧,樓上

自兩位都解釋得有點問題

oracle中唯一約束可以為空,並且空值可以重複,並不是樓上說的空只能為一次,你可以去測試。

主鍵約束 是唯一約束和不能為空。

兩者最主要的區別就是主鍵約束不能為空,而unique可以為空並且空值可以重複。

根據你的錯誤提示應該是你插入了相同的值。這個是違反約束的。

9樓:匿名使用者

oracle中唯一約來束可以為空源,並且空值可以重複。

主鍵約束 是唯一約束和不能為空。

兩者最主要的區別就是主鍵約束不能為空,而unique可以為空並且空值可以重複。

根據你的錯誤提示應該是你插入了相同的值。這個是違反約束的。

10樓:淚滴琴傷

select core.seq_dum_dimension_id.nextval from dual;

查詢dum_dimension序列最大值的下一個值

把查到的值新增到相應序列的起始值即可。。。。

11樓:羅密歐沒有愛

這是什麼東西?專業啊?

Oracle如何批量清空所有表資料

這個會建立日誌delete from 表 這個不會建立日誌,不能恢復truncate table 表名。oracle資料庫怎麼清除使用者下所有表 1.首先使用oracle系統使用者登入pl sql管理工具。2.在sql指令碼中,編寫和執行sql語句來刪除表空間的表空間名稱。3.如果希望清理使用者下的...

SQL怎樣根據訂單批量更新庫存

insert temp pno,pcount select distinct pno,sum pcount from 表b group by pno update 表a set pcount pcount temp.pcount from temp where temp.pno 表a.pno 若訂單...

phpcms後台不能批量更新欄目頁

怎麼會呢?一般後台都可以批量更新的啊,有手動跟自動兩種,不知道你的是哪一種,會不會是手動更新的呢?手動更新就是每次增加新內容後需要自己手動去更新這些內容,自動更新就是每次增加新的內容的同時自動幫你更新了其它的相應頁面。你看看你是不是需要手動更新。phpcms 更換伺服器後無法批量更新欄目 你得問題我...