//--- insere dados na tabela if(!DatabaseExecute(db, "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',32,'California',25000.00); " "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (NULL,'Allen',25,'Texas',15000.00); ")) { Print("DB: ", filename, " insert failed with code ", GetLastError()); DatabaseClose(db); return; }
Já tentou remover a coluna id da declaração ?
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ('Paul',32,'California',25000.00);
Fala Jonathan, eu tentei fazendo o INSERT acima citado e o valor inserido foi também NULL, eu pesquisei no site oficial SQLite e encontrei isso "Cada coluna de uma PRIMARY KEY deve ser individualmente NOT NULL. No entanto, NOT NULL não foi aplicado nas colunas PRIMARY KEY pelas versões anteriores do SQLite devido a um bug. No momento em que esse bug foi descoberto, tantos bancos de dados SQLite já estavam em circulação que foi tomada a decisão de não corrigir esse bug por medo de quebrar a compatibilidade."
Irei tentar pesquisar qual foi a solução deles e posto por aqui se conseguir.
Solução encontrada na documentação https://www.sqlite.org/autoinc.html, eu tinha declarado ID do tipo INT e para existir o AUTOINCREMENT teria que ser do tipo INTEGER, conforme documentação SQLite: " Se uma tabela contiver uma coluna do tipo INTEGER PRIMARY KEY , essa coluna se tornará um alias para o ROWID", "u ma coluna PRIMARY KEY só se torna uma chave primária inteira se o nome do tipo declarado for exatamente "INTEGER". Outros nomes de tipo inteiro como "INT" ou "BIGINT" ou "SHORT INTEGER" ou "UNSIGNED INTEGER" fazem com que a coluna de chave primária se comporte como uma coluna de tabela comum com afinidade de inteiro e um índice exclusivo, não como um alias para o rowid ". A solução esta editado no código abaixo:
//--- criamos a tabela COMPANY if(!DatabaseExecute(db, "CREATE TABLE COMPANY(" "ID INTEGER PRIMARY KEY AUTOINCREMENT," "NAME TEXT NOT NULL," "AGE INT NOT NULL," "ADDRESS CHAR(50)," "SALARY REAL );")) { Print("DB: ", filename, " create table failed with code ", GetLastError()); DatabaseClose(db); return; }AUTOINCREMENT não é permitido em tabelas que não seja INTEGER PRIMARY KEY. Qualquer tentativa de usar AUTOINCREMENT em uma tabela diferente da coluna INTEGER PRIMARY KEY resulta em erro.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Fala turminha, estou tentando realizar um AUTO INCREMENT na coluna ID tabela COMPANY do exemplo acima, inserindo um valor "NULL" para tentar gerar um ID automático, mas o resultado retorna uma string NULL, em vez de incrementar um inteiro.
Saída do comando: SELECT * FROM 'COMPANY';
A coluna "ID" deveria ter sido "2" para o incremento automático.
alguém sabe a solução?
...
somos trades.