On Wed, 2005-07-27 at 15:32, John DeSoi wrote: > On Jul 27, 2005, at 4:49 AM, Tino Wildenhain wrote: > > > I'd create a sequence: > > > > CREATE SEQUENCE global_unique_id_seq; > > > > and a function: > > > > CREATE OR REPLACE FUNCTION newid() > > RETURNS text AS > > $BODY$ SELECT nextval('global_unique_id_seq')::text; $BODY$ > > LANGUAGE 'sql' VOLATILE; > > > > > > now every call to newid() returns a garantied unique id for > > say the next 18446744073709551616 calls. > > Of course you can obfuscate the ID even more using > > md5, include servername and so on, but this will not improve > > security in any way (unless you mix data with 2nd database) > > > This is not really a viable replacement for a GUID == globally unique > identifier. Here global means that if I use the application in > multiple databases, I'm guaranteed that no two identifiers will be > the same. Using a sequence will only support uniqueness for a single > database. So, how can two databases, not currently talking to one another, guarantee that their GUIDs don't collide? using a large randomly generated name space only reduces the chances of collision, it doesn't actually guarantee it. ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq