Pergunta

Estou fazendo um invólucro de API Sqlite C.E eu quero retornar Rowid como tipo inteiro.Para marcar o caso de erro, preciso de um valor inválido do RowID.Existe um valor inválido de SQLite Rowid?Ou todos os valores em inteiros assinados de 64 bits são válidos para Rowid?(Porque se é, eu tenho que escolher outra maneira de implementar a caixa de erro de marcação)

Foi útil?

Solução

IDs de linha são inteiros assinados de 64 bits, portanto, o máximo é 0x7fffffffffffffffllfll.Mas, a menos que um ID de linha negativa ou zero tenha sido inserido explicitamente, os IDs de linha gerados automaticamente são sempre maiores que zero.Se você pode ter certeza de que os IDs de linha serão sempre gerados automaticamente, zero ou -1 seria valores seguros para retornos de status de erro.

Pensando ainda mais, percebo que a chamada de API sqlite3_last_insert_rowid retorna zero se nada tiver sido inserido na tabela, tornando-se zero um ID de linha "inválido" de fato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top