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樓:羅密歐沒有愛

這是什麼東西?專業啊?

使用tortoisesvn提交更新時提示某個檔案已過時

嵩山少俠來了 使用tortoisesvn提交更新時,提示某個檔案已過時,請更新工作副本?問題在於,你進行提交的目錄已經不是最新的版本。比如,的目錄是這樣的。svn是主要資料夾,其下有兩個子資料夾user1和user2 如果你在user1進行 的修改,你的同事在user2進行 的修改。你們各自不去修改...

windowsupdate總是提示更新是怎麼回事

win7系統 右下角有個紅旗樣子的東西 右擊選擇windows update,在開啟的視窗左邊選擇 更改設定 選擇 從不檢查更新 確定。或者 控制面板 管理工具 效能和維護 服務 automatic updates 設定啟動型別 禁用 確定,這樣就可以了。xp系統 開始選單 控制面板 自動更新 關閉...

怎樣批量修改oracle資料庫中某表中的某一列資料

在晴天的雨傘 最好的方法是批量修改,即每次修改5000條 一次修改不要超過一萬條,否則影響效能 雖然在11g中,我們也可以選擇使用merge命令,但你的這種情況最好先修改一部分然後看看影響,畢竟在生產環境作這樣的操作風險很大。如果是誤操作,最好還是請dba來恢復,雖然這樣做會被捱罵,但總比錯上加錯,...