Se você excluir as linhas no final da tabela, o incremento automático será redefinido:
sqlite> CREATE TABLE my_table (
id INTEGER PRIMARY KEY
);
...
sqlite> SELECT * FROM my_table;
1
2
3
sqlite> DELETE FROM my_table WHERE id = 3;
sqlite> SELECT * FROM my_table;
1
2
sqlite> INSERT INTO my_table DEFAULT VALUES;
sqlite> SELECT * FROM my_table;
1
2
3
Quero que o último comando retorne
1
2
4
Isso é possível?
Você obterá esse comportamento se contaminar a chave primária como AUTOINCREMENT:
Demonstração: https://dbfiddle.uk/U0Y3H-9w
Documentos sobre AUTOINCREMENT: https://www.sqlite.org/autoinc.html
o objetivo do AUTOINCREMENT é impedir a reutilização de ROWIDs de linhas excluídas anteriormente.