Re: Err. compiling func. with SET TRANS...
От | Christopher Kings-Lynne |
---|---|
Тема | Re: Err. compiling func. with SET TRANS... |
Дата | |
Msg-id | GNELIHDDFBOCMGBFGEFOCEJDCBAA.chriskl@familyhealth.com.au обсуждение исходный текст |
Ответ на | Err. compiling func. with SET TRANS... (otisg@ivillage.com) |
Список | pgsql-sql |
> CREATE FUNCTION simple_fun() RETURNS INTEGER AS ' > BEGIN > SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; > BEGIN; > SELECT 1; > END; > RETURN 1; > END; > ' LANGUAGE 'plpgsql'; > > This is as simple as it gets. > I think my syntax is correct (I checked Practical PostgreSQL book > as well as a number of 7.2 PDF documents, etc.). > > Am I missing a secret ingredient here? I'm no PL/PgSQL expert, but I think that you cannot do transactions within a function (this is because postgres doesn't support nested transactions. However, since the function will run inside a transaction anyway, just do this: CREATE FUNCTION simple_fun() RETURNS INTEGER AS ' BEGIN SELECT 1; RETURN 1; END; ' LANGUAGE 'plpgsql'; Now, of course you can't do your isolated transaction, so you'll need to create the function above and then use it like this: BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SELECT simple_fun(); COMMIT; Chris
В списке pgsql-sql по дате отправления: