我的桌子上有两个唯一的钥匙。使用异常DUP_VAL_ON_INDEX时,我可以选择发生冲突的特定(唯一)列吗?

时间:2019-07-09 14:32:35

标签: javascript sql plsql

我正在尝试更优雅地处理此异常。

我有两个具有唯一约束的不同列,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>
        ');

1 个答案:

答案 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