Definir valor inicial para AUTOINCREMENT no SQLite

Como posso definir o valor inicial para um campo AUTOINCREMENT no SQLite?

Insira explicitamente o value-1 na tabela e exclua a linha.

Edit: o próximo comentário abaixo, que discute a edição da tabela SQLITE_SEQUENCE diretamente é provavelmente preferível: https://stackoverflow.com/a/692871/10093

Do site do SQLite :

O SQLite acompanha o maior ROWID que uma tabela já realizou usando a tabela especial SQLITE_SEQUENCE . A tabela SQLITE_SEQUENCE é criada e inicializada automaticamente sempre que uma tabela normal que contém uma coluna AUTOINCREMENT é criada. O conteúdo da tabela SQLITE_SEQUENCE pode ser modificado usando as instruções comuns UPDATE, INSERT e DELETE. Mas fazer modificações nesta tabela provavelmente irá perturbar o algoritmo de geração de chaves AUTOINCREMENT. Certifique-se de que você sabe o que está fazendo antes de realizar tais mudanças.

Eu tentei isso e funciona:

 UPDATE SQLITE_SEQUENCE SET seq =  WHERE name = ''

Onde n +1 é o próximo ROWID que você quer e table é o nome da tabela.

Eu estou usando a consulta abaixo, que resolve o problema quando o sqlite_sequence não tem um registro para a tabela (ou seja, primeiro registro não foi adicionado ainda à tabela), caso contrário, atualiza a seqüência.

 BEGIN TRANSACTION; UPDATE sqlite_sequence SET seq =  WHERE name = ''; INSERT INTO sqlite_sequence (name,seq) SELECT '
', WHERE NOT EXISTS (SELECT changes() AS change FROM sqlite_sequence WHERE change <> 0); COMMIT;

Uma maneira de fazer isso é inserir a primeira linha especificando explicitamente o id da linha com o qual você deseja iniciar . O SQLite irá então inserir ids de linhas que são maiores que as anteriores.

Na solução com a tabela SQLITE_SEQUENCE, a input nesta tabela parece ser incluída após a primeira inserção na tabela com a coluna de incremento automático adicionada. Em alguns casos, isso pode causar problemas (ou seja, o incremento automático ainda é iniciado a partir de 1, não do valor desejado).