2010-07-08 5 views
0

J'ai écrit un magasin key/value en utilisant SQLite3 et C. La fonction put_pair(key, value) accepte une clé vide comme clé correcte et dans la requête INSERT la fonction lower(hex(randomblob(16))) génère une bonne clé pour cette ligne insérée.Dernière ligne insérée avec sqlite3 et C

Mais je ne sais pas comment récupérer cette clé et la renvoyer par ma fonction.

Des suggestions?

+0

Ou devrais-je simplement générer une clé unique (avec une autre méthode) d'abord, puis le retourner par ma fonction une fois que la La requête INSERT est bien exécutée? – sandra

Répondre

0

Lorsque la clé n'est pas connue, essayez de rechercher les valeurs correspondant à la condition donnée et renvoyez les lignes. Ou si c'est juste la dernière ligne insérée que vous recherchez, regardez this page.

+0

Merci vpit3833! Je pensais aussi à Rowid, mais cela nécessiterait une autre requête SELECT après la requête INSERT juste pour récupérer la clé. Et je voudrais exécuter seulement une requête par insertion. Je suppose que je devrais écrire une petite fonction uuid ou utiliser une simple existante. Merci encore! – sandra

2

Vous pouvez utiliser sqlite3_last_insert_rowid

+0

Merci Brian, comme je l'ai dit à vpit3833 ci-dessous, j'ai encore besoin d'un SELECT pour saisir cette clé, et je n'ai besoin que d'une requête par insert – sandra

0

la requête va comme ceci:

select * from emp où rowid = (select max (rowid) à partir emp);

emp = mon nom de la table

Hope aider ppl dans le besoin .....

Questions connexes