启用 `ON_ERROR_STOP` 不适用于 PostgreSQL 中的 `RAISE` 语句

问题描述 投票:0回答:1

首先,我启用了ON_ERROR_STOP以在错误发生后立即停止执行,如下所示:

\set ON_ERROR_STOP on

因为文档关于

ON_ERROR_STOP
说如下:

默认情况下,命令处理在发生错误后继续。当此变量设置为打开时,处理将立即停止

因此,我创建了带有

test
列的
num
表,然后插入
num
0
的行,如下所示:

CREATE TABLE test (
  num INTEGER
);

INSERT INTO test (num) VALUES (0);

然后,我运行了使用

RAISE 语句
引发 INFO 错误的脚本,然后将
num
表中的
test
加 1,如下所示。 *我不仅尝试了
INFO
错误,还尝试了
DEBUG
LOG
NOTICE
WARNING
EXCEPTION
错误以及
RAISE
语句:

DO LANGUAGE plpgsql $$
BEGIN
  RAISE INFO 'A custom error!';
  UPDATE test SET num = num + 1;
END
$$;

但是,

num
增加到
1
,如下所示。 *
num
未增加到
1
,仅出现
EXCEPTION
错误:

postgres=# SELECT num FROM test;
 num
-----
   1
(1 row)

那么,如何使

ON_ERROR_STOP
RAISE
语句正确配合使用?

sql database postgresql raise raiseerror
1个回答
-1
投票

试试这个:

DO LANGUAGE plpgsql $$
Declare a number:=1;
BEGIN
  a:=a/0;
  --the below lines after would not be 
  --processed 
  RAISE INFO 'A custom error!';
  UPDATE test SET num = num + 1;

END
$$;
© www.soinside.com 2019 - 2024. All rights reserved.