PostgreSQL команды

Posted by & filed under PostgreSQL.

Запуск под Ubuntu при установленной утилите service: sudo service postgresql-8.4 start

Транзакции и блокировка в PostgreSQL

Posted by & filed under PostgreSQL.

Как оказалось транзакции не блокируют таблицу или записи (ряды), поэтому возможна ситуация когда часть одной транзакции перекроет другую (в update, например, при параллельном исполнении). Поэтому приходится блокировать,так как заблокировать ряды не получается, то блокируем всю таблицу: LOCK TABLE «MyTable» IN EXCLUSIVE MODE; Не идеальное решение с точки зрения скорости, но решение, которое гарантирует, что транзакции… Read more »

duplicate key value violates unique constraint

Posted by & filed under PostgreSQL.

PGError: ERROR: duplicate key value violates unique constraint «lastsearches_pkey» Как сказано здесь нужно сделать так: Фиксим выполнив select setval(‘lastsearches_id_seq’, (select max(id) + 1 from lastsearches)); И все — заработало. Еще один вариант REINDEX INDEX lastsearches_pkey; Но у меня почему-то от ошибки это не избавило пока в pgMyAdmin в свойствах lastsearches_id_seq не указал нужное значение

auto increment в postgreSQL

Posted by & filed under PostgreSQL.

Вообще, решение проблемы я нашел здесь http://neilconway.org/docs/sequences/. На случай если ссылка будет не доступна напишу самое главное: Создание таблицы CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT, age INT4 ); SERIAL — аналог auto_increment Создание записи: INSERT INTO users (name, age) VALUES (‘Mozart’, 20);

Нижний регистр переменных в хранимых функциях (PostgreSQL, plpythonu)

Posted by & filed under PostgreSQL.

Пример: CREATE OR REPLACE FUNCTION myschema.find_available(num_State integer) RETURNS SETOF integer AS $BODY$ plan0= plpy.prepare(«SELECT id,start_available, stop_available FROM «Flat» WHERE state=$1″,[«integer»]) rv=plpy.execute(plan0,[num_State]) … BODY$ LANGUAGE ‘plpythonu’ VOLATILE … Выдает сообщение DETAIL: <type ‘exceptions.NameError’>: global name ‘num_State’ is not defined Приводим переменную num_State к нижнему регистру ( num_state) и ошибки уже нет.

Подготовленные запросы в PostgreSQL

Posted by & filed under PostgreSQL.

Пример1: PREPARE fooplan (int, text, bool, numeric) AS INSERT INTO foo VALUES($1, $2, $3, $4); EXECUTE fooplan(1, ‘Hunter Valley’, ‘t’, 200.00); Пример2: PREPARE usrrptplan (int, date) AS SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid AND l.date = $2; EXECUTE usrrptplan(1, current_date);

SETOF в PostgreSQL

Posted by & filed under PostgreSQL.

Писал хранимую функцию, пока не указал SETOF никак не мог вывести результат назад

Синтаксис запроса в PostgreSQL 8.4

Posted by & filed under PostgreSQL.

SELECT id,name FROM «UserTsd» WHERE id=1 id,name — регистр не имеет значения «UserTsd» — регистр имеет значение, двойные кавычки обязательны Почему именно так хз, но работает именно так.