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 по дате отправления:

Предыдущее
От: "D'Arcy J.M. Cain"
Дата:
Сообщение: Re: INSERT requires SERIAL column?
Следующее
От: Bruno Wolff III
Дата:
Сообщение: Re: Bad design or SQL statment quandary