我想验证包含sql查询的文件的语法,然后才能在我的CVS项目中提交它们.
为了做到这一点,我有一个commitinfo脚本,但我很难找到sql命令是否有效.psql似乎没有dryrun模式,并且从语法(在源代码中)构建我自己的postgresql-dialact测试器似乎是一个很长的延伸.
脚本可能包含多个查询,因此EXPLAIN不能包含它们.
任何提示?
我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理PostgresqQL中的这个.
如果我使用COMMIT或ROLLBACK,我收到错误.
CREATE OR REPLACE FUNCTION TEST1 ()
RETURNS VOID
LANGUAGE 'plpgsql'
AS $$
BEGIN
INSERT INTO table1 VALUES (1);
INSERT INTO table1 VALUES (2);
INSERT INTO table1 VALUES ('A');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;$$;
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用; COMMIT并且ROLLBACKPostgreSQL函数不支持.