Question

Je fais un emballage de l'API SQLite C. Et je veux retourner Rowid comme type entier. Pour marquer le cas d'erreur, j'ai besoin d'une valeur non valide du Rowid. Y a-t-il valeur invalide de Sqlite Rowid? Ou toutes les valeurs des entiers signées 64 bits sont valides pour Rowid? (Parce que si c'est le cas, je dois choisir une autre façon d'implémenter le cas d'erreur de marquage)

Était-ce utile?

La solution

Les ID de ligne sont des entiers signés à 64 bits, donc le maximum est 0x7fffffffffffffffll. Mais à moins qu'un ID de ligne négatif ou nul ait été entré explicitement, les ID de ligne générés par automatique sont toujours supérieurs à zéro. Si vous pouvez être certain que les ID de ligne seront toujours générés automatiquement, alors zéro ou -1 serait des valeurs sûres pour les renvois d'erreur.

En pensant plus loin, je me rends compte que le sqlite3_last_insert_rowid L'appel API renvoie zéro si rien n'a jamais été inséré dans la table, faisant ainsi de zéro un ID de ligne de facto "non valide".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top