如何在 SQLite 中插入一个唯一的随机整数?
How to insert a unique random integer in SQLite?
假设我将用户保存在数据库中,我希望每个用户都有一个唯一的随机 ID(实际上并非如此,这只是一个更简单的示例)。当我 INSERT
用户时,有没有办法插入一个唯一的随机 ID?
我知道我可以很容易地做一个自动递增列,这样每一行都有一个唯一的整数,但我需要一个专门用于这个系统的随机数。
我对新用户的标准插入查询示例:
INSERT INTO 'Users' VALUES ('RandomID', 'Bleh', 'Bleh2') (random value here, 1, 2)
Sqlite 有 random()
其中 returns 一个随机整数。但它可能不是每次都是独一无二的。您可以附加时间戳或 row_id
以获得唯一的随机数。
我也有同样的疑问,并在 this article 中找到了一个有趣的答案:使用 pre-populated table。
您使用任何方法(例如,尝试在 UNIQUE 字段中插入随机数并在数字不唯一时静默失败)预先创建一个 table 具有唯一随机数的 n 行, 直到获得所需的行数)。
创建 table 后,您可以 100% 确定其中的数字是唯一的,您可以简单地按顺序使用它们并在使用(或不使用)后丢弃它们。
使用此方法时,当您接近 pre-populated table 中的行数限制时,您需要有某种警报系统,以便您可以重新生成一组新值.
假设我将用户保存在数据库中,我希望每个用户都有一个唯一的随机 ID(实际上并非如此,这只是一个更简单的示例)。当我 INSERT
用户时,有没有办法插入一个唯一的随机 ID?
我知道我可以很容易地做一个自动递增列,这样每一行都有一个唯一的整数,但我需要一个专门用于这个系统的随机数。
我对新用户的标准插入查询示例:
INSERT INTO 'Users' VALUES ('RandomID', 'Bleh', 'Bleh2') (random value here, 1, 2)
Sqlite 有 random()
其中 returns 一个随机整数。但它可能不是每次都是独一无二的。您可以附加时间戳或 row_id
以获得唯一的随机数。
我也有同样的疑问,并在 this article 中找到了一个有趣的答案:使用 pre-populated table。
您使用任何方法(例如,尝试在 UNIQUE 字段中插入随机数并在数字不唯一时静默失败)预先创建一个 table 具有唯一随机数的 n 行, 直到获得所需的行数)。
创建 table 后,您可以 100% 确定其中的数字是唯一的,您可以简单地按顺序使用它们并在使用(或不使用)后丢弃它们。
使用此方法时,当您接近 pre-populated table 中的行数限制时,您需要有某种警报系统,以便您可以重新生成一组新值.