我正在尝试更优雅地处理此异常。
我有两个具有唯一约束的不同列,emp_id(主键)和system_id。这是emp_id不是顺序的遗留代码(我知道... -_-)。表格中有一些空白,输入员工信息目前是手动过程。
引发此异常时,可以指定哪个(或两个)列具有现有值?
EXCEPTION
WHEN dup_val_on_index THEN
htp.p('
<script type="text/javascript">
function id_exists() {
alert("Error: Employee ID or System ID already exists.");
}
id_exists();
window.history.back();
</script>
');
答案 0 :(得分:1)
您可以检查错误消息的名称是第一个还是第二个约束 名称大写。
begin
....
EXCEPTION
WHEN dup_val_on_index THEN
if sqlerrm like '%CONSTRAINT_SYSTEM%' then
...
end if;
if sqlerrm like '%CONTRAINT_EMPNAME%' then
...
end if;
end;
这是一个小例子: db <>小提琴here