且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

EDB PPAS的"坑" 不兼容PostgreSQL一例

更新时间:2022-10-03 18:52:56

这样一段正常的兼容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/