¿Cómo insert una identificación única en cada fila de SQLite?

Tengo el siguiente código SQLite. ¿Cómo inserto una identificación única que genera automáticamente en cada fila?

tx.executeSql('DROP TABLE IF EXISTS ENTRIES'); tx.executeSql('CREATE TABLE IF NOT EXISTS ENTRIES (id unique, data)'); tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (1, "First row")'); tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (2, "Second row")'); 

Puede definir id como una columna de incremento automático :

 create table entries (id integer primary key autoincrement, data) 

Como señala MichaelDorner, la documentation de SQLite dice que una integer primary key hace lo mismo y es ligeramente más rápida. Una columna de ese tipo es un alias para rowid , que se comporta como una columna de autoincrement .

 create table entries (id integer primary key, data) 

Este comportamiento es implícito y podría atrapar desprevenidos a los inexpertos desarrolladores de SQLite.

Esta es la syntax que uso.

  id INTEGER PRIMARY KEY AUTOINCREMENT, 

Simplemente no proporcione datos para la columna de autoincrement

  tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (NULL, "First row")'); 

O incluso más simple

  tx.executeSql('INSERT INTO ENTRIES (data) VALUES ("First row")'); 

autoincrement es tu amigo amigo.

 CREATE TABLE IF NOT EXISTS ENTRIES (id integer primary key autoincrement, data); INSERT INTO ENTRIES (data) VALUES ("First row"); INSERT INTO ENTRIES (data) VALUES ("Second row"); 

y entonces:

 > SELECT * FROM ENTRIES; 1|First row 2|Second row 

para INSERT, mejor proporcione un valor "nulo" para el marcador de position del signo de interrogación del valor de autoincrement correspondiente.

  tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (?, ?)', [null, "First row"]); 

Esto funcionó perfectamente para mí

 c.execute('INSERT INTO WEBSITES (url) VALUES (?)', [url])