簡體   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