繁体   English   中英

如何在每个SQLite行中插入唯一的ID?

[英]How to insert a unique ID into each SQLite row?

我有以下SQLite代码。 如何在每行中插入自动生成唯一ID?

    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")');

您可以将id定义为自动增量列

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

正如MichaelDorner指出的那样, SQLite文档integer primary key做同样的事情并且速度稍快。 该类型的列是rowid的别名,其行为类似于自动增量列

create table entries (id integer primary key, data)

这种行为是隐含的,可能会让缺乏经验的SQLite开发人员措手不及。

这是我使用的语法。

 id INTEGER PRIMARY KEY AUTOINCREMENT,

只是不提供自动增量列的数据

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

甚至更简单

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

autoincrement是你的朋友伙伴。

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");

接着:

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

对于INSERT,更好地为相应的自动增量值的问号占位符提供“空”值。

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

这对我很有用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM