J'ajoute une colonne «index» à une table dans SQLite3 pour permettre aux utilisateurs de réorganiser facilement les données, en renommant l'ancienne base de données et en créant un nouveau à sa place avec les colonnes supplémentaires. P>
Le problème que j'ai est que je dois donner à chaque ligne un numéro unique dans la colonne "Index" lorsque j'insère ... Sélectionnez les anciennes valeurs. P>
Une recherche que j'ai fait un terme utile à Oracle appelé Rownum, mais SQLite3 n'a pas cela. Y a-t-il quelque chose d'équivalent dans SQLite? P>
4 Réponses :
Aucun SQLite n'a pas d'équivalent direct à l'oracle's Rownum.
Si je comprends votre exigence correctement, vous devriez pouvoir ajouter une colonne numérotée basée sur la commande de l'ancienne table de cette façon: P> < pré> xxx pré>
La nouvelle table contient: p> autooincrerement code> fait quel nom suggère: chaque ligne supplémentaire a le "valeur précédente incrémentée de 1. p> p>
Manque complètement le point. Rownum est dynamique, s'applique à toutes les tables.
Vous pouvez utiliser l'un des noms de lignes spéciaux Rowid code>,
OID code> ou
_rowid _ code> pour obtenir le Rowid d'une colonne. Voir http://www.sqlite.org/lang_creatier.html#rowid.html#rowid Pour plus de détails (et que les rangées peut être masqué par des colonnes normales appelées
rowid code> et ainsi de suite). p>
Sélectionnez Rowid à partir de
Pas exactement. Oracles Rownum s'applique au résultat i> de la requête. Sélectionnez Rownum de TBL où ROWNUM> 3 CODE> ne trouvera rien (car la première ligne où cela serait vrai, obtenez le Rownum 1). Mais ce n'est pas l'exigence de l'OPS. Il a juste besoin d'une valeur unique.
OK, ce n'est peut-être pas «exactement» comme Rownum, mais c'est l'identifiant unique pour chaque ligne ajoutée automatiquement. C'est l'exigence de @ RaceImaztion.
Beaucoup de gens ici semblent mélanger Rowid fort> est un identifiant unique d'une ligne de base de données. C'est presque invariant (changé lors de l'importation / à l'exportation, mais c'est la même chose entre les différentes requêtes SQL). P> ROWNUM strong> est un champ calculé correspondant au numéro de ligne dans le résultat de la requête. C'est toujours 1 pour la première rangée, 2 pour la seconde, et ainsi de suite. Il n'est absolument pas lié à une rangée de table et la même rangée de table pourrait avoir des rownums très différents en fonction de la façon dont il est interrogé. P> SQLite a un rabochant mais pas de rownum. Le seul équivalent que j'ai trouvé est Vous pouvez obtenir ce que vous voulez avec une requête comme celle-ci: p>
Je pense que vous voulez utiliser la limite de contrainte en SQLite.
Sélectionnez * à partir du tableau CODE> peut renvoyer des milliers d'enregistrements.
Cependant, vous pouvez contraindre ceci en ajoutant le mot-clé code> limite code>. P>
Sélectionnez * à partir de la limite de table 5; code>
Retournera les 5 premiers enregistrements de la table renvoyée dans votre requête - si disponible p>