Sql 生成不可预测的随机ID的最佳方法?

Sql 生成不可预测的随机ID的最佳方法?,sql,sqlite,Sql,Sqlite,我希望生成某种id,而不使用自动增量,因为我不希望人们能够编写一个小脚本并查看整个数据库。我如何生成这样的ID以确保它们是唯一的且易于查询 我正在使用SQLite和nodeJS,不过我计划将来切换到更健壮的版本。使用普通的整型主键列,但不要使用自动增量(您通常不想使用)。然后插入rowid为9223372036854775807的行,这是可能的最大行。没有给出rowid的进一步插入将随机选取一个未使用的插入 例如: CREATE TABLE ex(id INTEGER PRIMARY KEY,

我希望生成某种id,而不使用
自动增量
,因为我不希望人们能够编写一个小脚本并查看整个数据库。我如何生成这样的ID以确保它们是唯一的且易于查询


我正在使用SQLite和nodeJS,不过我计划将来切换到更健壮的版本。

使用普通的
整型主键列,但不要使用
自动增量
(您通常不想使用)。然后插入rowid为9223372036854775807的行,这是可能的最大行。没有给出rowid的进一步插入将随机选取一个未使用的插入

例如:

CREATE TABLE ex(id INTEGER PRIMARY KEY, x);
INSERT INTO ex VALUES (9223372036854775807, null);
INSERT INTO ex(x) VALUES ('foo');  -- uses a random id
SELECT last_insert_rowid();

使用普通的
整型主键
列,但不要使用
自动增量
(您通常不想使用)。然后插入rowid为9223372036854775807的行,这是可能的最大行。没有给出rowid的进一步插入将随机选取一个未使用的插入

例如:

CREATE TABLE ex(id INTEGER PRIMARY KEY, x);
INSERT INTO ex VALUES (9223372036854775807, null);
INSERT INTO ex(x) VALUES ('foo');  -- uses a random id
SELECT last_insert_rowid();

SQLite具有以下函数():

  • random
  • randomblob
例如,您可以使用SQLite生成这样的GUID,但这很难看;-)

(同一个值不太可能出现两次,但不添加唯一的安全约束)


示例:
3326836A-881A-25D0-234F-F64A04EBD990
SQLite具有以下功能():

  • random
  • randomblob
例如,您可以使用SQLite生成这样的GUID,但这很难看;-)

(同一个值不太可能出现两次,但不添加唯一的安全约束)


示例:
3326836A-881A-25D0-234F-F64A04EBD990

添加支持UUID的模块并使用它们。添加支持UUID的模块并使用它们。