PostgreSQL错误代码,设置自定义错误代码
我正在把一个甲骨文触发器翻译成Postgres;到目前为止,我已经在博士后中翻译了这篇文章PostgreSQL错误代码,设置自定义错误代码,postgresql,error-handling,triggers,Postgresql,Error Handling,Triggers,我正在把一个甲骨文触发器翻译成Postgres;到目前为止,我已经在博士后中翻译了这篇文章 DROP TRIGGER IF EXISTS trg_test_biud ON mytable CASCADE; CREATE OR REPLACE FUNCTION trigger_fct_trg_test_biud() RETURNS trigger AS $BODY$ DECLARE id_ double precision := NULL; hour_ varchar(10) :=
DROP TRIGGER IF EXISTS trg_test_biud ON mytable CASCADE;
CREATE OR REPLACE FUNCTION trigger_fct_trg_test_biud() RETURNS trigger AS $BODY$
DECLARE
id_ double precision := NULL;
hour_ varchar(10) := NULL;
BEGIN
/* INSERT */
IF TG_OP = 'INSERT' THEN
BEGIN
select nextval('myschema.id_audit_mytable_seq') into id_;
SELECT TO_CHAR(current_timestamp, 'HH24:MI:SS') INTO hour_;
INSERT INTO myschema.audit_mytable(id, id_mytable, user_name, event, myhour, hour, geometry)
VALUES (id_, NEW.code, NEW.user_name, 'INSERT', LOCALTIMESTAMP, hour_, NEW.GEOMETRY);
RETURN NEW;
EXCEPTION
WHEN OTHERS THEN
RAISE EXCEPTION '%', 'Error when insert into audit_mytable: ' || sqlerrm USING ERRCODE = '-20000';
END;
END IF;
END
$BODY$
LANGUAGE 'plpgsql';
CREATE TRIGGER trg_test_biud
BEFORE INSERT OR UPDATE OR DELETE ON myschema.mytable FOR EACH ROW
EXECUTE PROCEDURE trigger_fct_trg_test_biud();
当引发异常时,我得到以下错误:
ERROR: unrecognized exception condition «-20000»
SQL state: 42704
这是否与Oracle中的“自定义错误代码”是负数有关?博士后不承认这一点吗?我查看了这个页面,但它没有提到负数:Oracle数字-20000不是一个SQLSTATE,而是一个专有错误代码 您必须指定文档附录A中定义的5个字符的SQLSTATEs之一