UUID для PostgreSQL с помощью Tcl
Понадобилось мне быстро добавить уникальный идентификатор (uuid) к таблице. На тикле нужная функция пишется очень легко - с помощью пакета uuid или вызова внешней утилиты. Генерация 10 000 идентификаторов во втором случае занимает около 10 с на десктопе, что вполне себе шустро, так что на нем и остановимся.
Установим пакет с нужной нам утилитой:
Установим пакет с нужной нам утилитой:
sudo aptitude install uuidА вот и реализация функции:
--DROP FUNCTION uuid(); CREATE OR REPLACE FUNCTION uuid() RETURNS text AS $BODY$ return [string map {- ""} [exec uuid]] $BODY$ LANGUAGE 'pltclu' VOLATILE SECURITY DEFINER; ALTER FUNCTION uuid() OWNER TO offline; --select uuid(); alter table offline.documents add column checksum text not null default uuid(); CREATE UNIQUE INDEX documents_checksum_idx ON offline.documents USING btree (checksum);Очень даже наглядная иллюстрация "unix way". Разумеется, так делать можно только под юниксами, где порождение множества процессов есть совершенно нормальное дело - потому и "unix way".
Comments