1

我有数千个 sqlINSERT INTO行的脚本文件。其中一些行将插入数据库中已经存在的数据,所以我想捕获这些错误并绕过它。有没有办法捕捉触发器抛出的错误并忽略它?

ERROR at line 1:
ORA-20053: Username must be unique
ORA-06512: at "MY_TRIGGER", line 18
ORA-04088: error during execution of trigger 'MY_TRIGGER'
ORA-06512: at line 3

我可以通过捕获 aDUP_VAL_ON_INDEX然后做 来使用独特的约束来做到这一点NULL,但这不适用于上述触发错误。

4

1 回答 1

1

您可以定义自己的异常并使用它,就像使用默认异常处理程序之一(如dup_val_on_index.

DECLARE
  l_unique_username_ex exception;
  pragma exception_init( l_unique_username_ex, -20053 );
BEGIN
  <<your INSERT statement>>
EXCEPTION
  WHEN l_unique_username_ex
  THEN
    NULL; -- Ignore the error
END;

不过,一般来说,修改脚本更有意义,以便它们只尝试插入不存在的行,而不是让触发器尝试标记它们然后忽略错误。

于 2012-09-17T20:00:25.587 回答