मैं दावा नहीं करता कि निम्नलिखित कुशल हैं, लेकिन इस तरह हमने अतीत में इस तरह का काम किया है।
CREATE FUNCTION make_uid() RETURNS text AS $$
DECLARE
new_uid text;
done bool;
BEGIN
done := false;
WHILE NOT done LOOP
new_uid := md5(''||now()::text||random()::text);
done := NOT exists(SELECT 1 FROM my_table WHERE uid=new_uid);
END LOOP;
RETURN new_uid;
END;
$$ LANGUAGE PLPGSQL VOLATILE;
make_uid()
my_table
. में कॉलम के लिए डिफ़ॉल्ट के रूप में इस्तेमाल किया जा सकता है . कुछ इस तरह:
ALTER TABLE my_table ADD COLUMN uid text NOT NULL DEFAULT make_uid();
md5(''||now()::text||random()::text)
स्वाद के लिए समायोजित किया जा सकता है। आप encode(...,'base64')
. पर विचार कर सकते हैं बेस-64 में उपयोग किए गए कुछ वर्णों को छोड़कर URL अनुकूल नहीं हैं।