我正在使用 PostgreSQL 服务器 9.0.4,我正在尝试 1. 创建一个新架构,2. 在该架构下创建一个表,以及 3. 在该表中插入数据,在同一个 EXECUTE 中并失败。如果我尝试
CREATE OR REPLACE FUNCTION pg_temp.test( )
RETURNS void LANGUAGE plpgsql AS
$BODY$
BEGIN
EXECUTE 'CREATE SCHEMA test; CREATE TABLE test.t (id integer );
INSERT INTO test.t (id) VALUES (0);';
END;
$BODY$;
select pg_temp.test( );
我因以下错误而失败。
ERROR: schema "test" does not exist
LINE 1: ...t; CREATE TABLE test.t (id integer ); INSERT INTO test.t (id...
^
但是,如果在同一个事务中使用两个 EXECUTE,同样的事情会起作用。
CREATE OR REPLACE FUNCTION pg_temp.test( )
RETURNS void LANGUAGE plpgsql AS
$BODY$
BEGIN
EXECUTE 'CREATE SCHEMA test; CREATE TABLE test.t (id integer );';
EXECUTE 'INSERT INTO test.t (id) VALUES (0);';
END;
$BODY$;
无法理解两者的区别。如果有人可以在这里帮助我,将不胜感激。
谢谢。