Comment créer un guid dans PostgreSQL

Comment créer un GUID dans le format Windows dans Postgresql 9.0+?

J'ai essayé la fonction

CREATE or REPLACE FUNCTION public.getguid() RETURNS varchar AS $BODY$ 
DECLARE 
  v_seed_value varchar(32); 
BEGIN 
  select 
    md5( 
      inet_client_addr()::varchar || 
      timeofday() || 
      inet_server_addr()::varchar || 
      to_hex(inet_client_port()) 
    ) 
  into v_seed_value; 

  return (substr(v_seed_value,1,8) || '-' || 
          substr(v_seed_value,9,4) || '-' || 
          substr(v_seed_value,13,4) || '-' || 
          substr(v_seed_value,17,4) || '-' || 
          substr(v_seed_value,21,12)); 
END; $BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;

de

http://postgresql.1045698.n5.nabble.com/newid-in-postgres-td1879346.html

Essayé

select getguid()
union all
select getguid()

mais il renvoie mêmes valeurs

"c41121ed-b6fb-c9a6-bc9b-574c82929e7e"
"c41121ed-b6fb-c9a6-bc9b-574c82929e7e"

Comment résoudre ce problème de manière que les lignes uniques sont-ils de retour?

Est-il une raison quelconque vous n'utilisez pas déjà fourni des fonctions? postgresql.org/docs/current/static/uuid-ossp.html
Que l'UUID de générateur utilise des valeurs qui ne changent pas au cours d'une transaction pour générer des Uuid, de sorte qu'il génère le même. C'est une mauvaise mise en œuvre; utiliser les fonctions officielles qu'a_horse_with_no_name liés.
Pourrait être un Windows question, le manque de précision: postgresql.org/message-id/[email protected]

OriginalL'auteur Andrus | 2015-07-06