Генерация идентификатора пользователя посредством PL/PGSQL

Возможности реляционных баз данных PostgreSQL можно существенно расширить за счет процедур на специальном языке — PL/PSQL. Он очень прост, существует давно и поэтому весьма стабилен. Дополнительным удобством является то, что вызов процедуры — это транзакция, поэтому если при ее выполнении происходит какой-нибудь сбой, данные не теряются. Просто происходит откат к прежнему состоянию.

На PL/SQL можно не только производить действия с таблицами, но и писать программы, возвращающие те или иные значения. Вот как, например, можно генерировать идентификатор пользователя, построенный по принципу «3 буквы 6 цифр» (при этом, правда, должен поддерживаться тип данных uuid, но о нем в другой раз):

create or replace function new_uid() returns varchar(9) as $$
declare 
	new_uuid text := uuid_generate_v4();
	letters  text := regexp_replace(upper(new_uuid), '[0-9]|-', '', 'g');
	digits   text := regexp_replace(upper(new_uuid), '[A-Z]|-', '', 'g');
        uid_to_return varchar(9) := substring(letters from 1 for 3)||substring(digits from 1 for 6);
        rw users%rowtype;
begin   
        if uid_to_return !~ '[A-Z]{3}[0-9]{6}' then
              raise exception 'Какой-то херовенький идентификатор получился - %. Такое бывает редко, попробуйте еше раз.', uid_to_return;
        end if;
        select * from users where id = new_uuid into rw;
        if found then
              raise exception 'Пользователь с таким идентификатором уже есть в базе.';
        end if;
	return uid_to_return;
end
$$ language plpgsql;

FreeBSD: запуск PostgreSQL в jail топик-ссылка

Руководство по запуску PostgreSQL в jail FreeBSD. Рекомендуется к прочтению!

1C 7.7 + Etersoft Wine + PostgreSQL

Довольно часто требуется обеспечить интеграцию программы 1С с другими базами данных. Под Windows это легко запрограммировать с помощью ADO. А как быть, если 1C работает в среде Linux под Wine? ADO с Wine не очень-то стыкуется, к тому же теряется лицензионная чистота. Остается использовать UNIX-way. Например, задействовать демон incron, реагирующий на изменения файлов.

( Читать дальше )

Установка PostgreSQL из исходников в Ubuntu 10.04

Собирать будем из исходного кода:

www.postgresql.org/ftp/source/

Я собрал версию v9.0rc1. Устанавливаем необходимое для сборки:

( Читать дальше )
  • +6
  • 01 сентября 2010, 15:30
  • Sergei_T
  • 8