2017-09-10 4 views
0

Générer gen_random_uuid() pour la colonne key s'il count(key) < 1postgres - insérer gen_random_uuid() pour la colonne "clé" si le compte (clé) <1

Mon nom est tablekeytable et column est key.

J'utilise l'instruction insert ci-dessous pour générer l'uuid: c'est la seule valeur de la table.

INSERT INTO keytable VALUES(gen_random_uuid()); 

key 
--------------------------------------- 
5686473e-add1-4ab1-be85-7e62152ce539 

Je voulais exécuter cette seule déclaration insert quand je n'ai pas de valeurs dans ma colonne « clé ». En d'autres termes, si count(key) < 1 puis je veux exécuter le INSERT INTO keytable VALUES(gen_random_uuid()); S'il vous plaît aider.

+0

est votre condition clé pour une valeur désirée 'gen_random_uuid' .. quel est-il .. –

Répondre

0

utilisation INSERT ... SELECT construction à la place

t=# begin; insert into keytable select gen_random_uuid() where (select count(key) from keytable) < 1; 
BEGIN 
INSERT 0 1 
t=# insert into keytable select gen_random_uuid() where (select count(key) from keytable) < 1; 
INSERT 0 0 
t=# rollback; 
ROLLBACK 
0

déjà répondu par Clodoaldo Neto (lien ci-dessous)

here is according to your perspective 

insert into keytable 
select gen_random_uuid() 
where not exists (select key from keytable); 

Il n'insérera le résultat de l'instruction select lorsque

select key from keytable 

cela ne ne retourne rien!

pour plus d'informations: https://stackoverflow.com/a/15710598/8506841

+0

Merci ça a marché !!? – Aby

+0

@Aby Si votre problème est résolu! veuillez l'accepter comme votre réponse. – SavvySparrow