Re: How to mark a transaction as SERIALIZABLE?

Поиск
Список
Период
Сортировка
От Thom Brown
Тема Re: How to mark a transaction as SERIALIZABLE?
Дата
Msg-id AANLkTikTkv5nJ5ZwZMN4LEkYWcWEY-oP6CYEz=jDtMkn@mail.gmail.com
обсуждение исходный текст
Ответ на How to mark a transaction as SERIALIZABLE?  (Joe Carr <joe.carr@gmail.com>)
Ответы Re: How to mark a transaction as SERIALIZABLE?  (Joe Carr <joe.carr@gmail.com>)
Список pgsql-novice
On 2 November 2010 01:51, Joe Carr <joe.carr@gmail.com> wrote:
In version 9.0, I've been reading http://www.postgresql.org/docs/9.0/interactive/sql-begin.html. I've been using the following  : 

CREATE OR REPLACE FUNCTION test(character varying)
  RETURNS SETOF integer AS
$BODY$

BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
--SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
RETURN 1;
END;
 $BODY$
  LANGUAGE plpgsql VOLATILE

which returns with the error : 
ERROR:  syntax error at or near "TRANSACTION"
LINE 1: TRANSACTION ISOLATION LEVEL SERIALIZABLE

if the BEGIN line is empty with no semi-colon, the function will work :
CREATE OR REPLACE FUNCTION test(character varying)
  RETURNS integer AS
$BODY$

BEGIN 
--TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
--SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 

RETURN 1;
END;
 $BODY$
  LANGUAGE plpgsql VOLATILE

but if I place a semi-colon after BEGIN (e.g. BEGIN;), I get the error :
ERROR:  syntax error at or near ";"
LINE 5: BEGIN; 

So any help you may be able to provide in the BEGIN syntax (or whatever I'm doing wrong) is greatly appreciated. Thanks!

   -Joe


BEGIN in your function isn't the same as BEGIN in an SQL statement block.  It merely marks where the function begins, not the transaction.  Note that you also shouldn't use a semi-colon after the BEGIN in a function.  See this page for more info: http://www.postgresql.org/docs/9.0/interactive/plpgsql-structure.html

--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

В списке pgsql-novice по дате отправления:

Предыдущее
От: Joe Carr
Дата:
Сообщение: How to mark a transaction as SERIALIZABLE?
Следующее
От: Joe Carr
Дата:
Сообщение: Re: How to mark a transaction as SERIALIZABLE?