Estou tentando criar uma tabela com incremento automático primary key
no Sqlite3 . Não tenho certeza se isso é realmente possível, mas espero ter apenas que designar os outros campos.
Por exemplo:
CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));
Então, quando adiciono um valor, esperava apenas ter que fazer:
INSERT INTO people
VALUES ("John", "Smith");
Isso é mesmo possível?
Estou executando sqlite3
sob cygwin
no Windows 7.
select rowid from people;
Sim, isso é possível. De acordo com o SQLite FAQ :
fonte
A partir de hoje - junho de 2018
Aqui está o que a documentação oficial do SQLite tem a dizer sobre o assunto (negrito e itálico são meus):
fonte
Você leu isso? Como faço para criar um campo AUTOINCREMENT.
fonte
Não se deve especificar a
AUTOINCREMENT
palavra-chave próximaPRIMARY KEY
. Exemplo de criação de chave primária de incremento automático e inserção:darei:
fonte
Ao lado de rowid, você pode definir seu próprio campo de incremento automático, mas não é recomendado. É sempre a melhor solução quando usamos o rowid que é aumentado automaticamente.
Leia aqui para obter informações detalhadas.
fonte
SQLite AUTOINCREMENT é uma palavra-chave usada para incrementar automaticamente um valor de um campo na tabela. Podemos incrementar automaticamente um valor de campo usando a palavra-chave AUTOINCREMENT ao criar uma tabela com um nome de coluna específico para incrementá-lo automaticamente.
A palavra-chave AUTOINCREMENT pode ser usada apenas com o campo INTEGER. Sintaxe:
O uso básico da palavra-chave AUTOINCREMENT é o seguinte:
Por exemplo, veja abaixo: Considere a tabela COMPANY a ser criada da seguinte forma:
Agora, insira os seguintes registros na tabela TB_COMPANY_INFO:
Agora selecione o registro
fonte
Eu sei que esta resposta está um pouco atrasada.
Meu objetivo com esta resposta é para a referência de todos, caso eles encontrem esse tipo de desafio com o SQLite agora ou no futuro e estejam tendo dificuldades com isso.
Agora, olhando para trás em sua consulta, deve ser algo assim.
Funciona do meu lado. Igual a,
Caso você esteja trabalhando com SQLite, sugiro que você dê uma olhada no DB Browser for SQLite . Funciona em diferentes plataformas também.
fonte
O que você faz é correto, mas a sintaxe correta para 'incremento automático' deve ser sem espaço:
(Observe também que alterei seus varchars para strings. Isso porque o SQLite transforma internamente um varchar em uma string, então por que se preocupar?)
então sua inserção deve ser, na linguagem SQL o mais padrão possível:
embora seja verdade que se você omitir id, ele será automaticamente incrementado e atribuído, eu pessoalmente prefiro não confiar em mecanismos automáticos que podem mudar no futuro.
Uma nota sobre o autoincremento: embora, como muitos apontaram, não seja recomendado pelo pessoal do SQLite, eu não gosto da reutilização automática de ids de registros excluídos se o autoincremento não for usado. Em outras palavras, gosto que o id de um registro excluído nunca mais apareça.
HTH
fonte