EDB PPAS(Oracle 兼容版)的坑 不兼容PostgreSQL一例
背景
这样一段正常的兼容ORACLE的代码,在使用社区版本的psql连接到PPAS时,执行异常
postgres=> create table about_we (id int, info text); create sequence SEQ_ABOUT_WE_ID;
postgres=> CREATE OR REPLACE TRIGGER TRI_ABOUT_WE_ID BEFORE INSERT ON ABOUT_WE
FOR EACH ROW
BEGIN
SELECT SEQ_ABOUT_WE_ID.nextval
INTO :new.ID
FROM dual;
end;
ERROR: 42601: syntax error at end of input
LINE 6: FROM dual;
^
LOCATION: scanner_yyerror, scan.l:1374
但实际上,语法是PPAS兼容ORACLE的语法,并没有问题。
原因惊人,竟然是PPAS在客户端psql上做了hack,来实现这一的语法兼容。
所以使用社区版本的psql是不行的,记住咯。
以后不要使用社区版本的psql连接PPAS了,否则就等着给自己挖坑吧。 请使用EDB自己的那套东西。
或者使用pgadmin,因为pgadmin号称兼容ppas。
https://www.pgadmin.org/