在sqlite中自动增量的唯一列

时间:2014-01-16 09:50:59

标签: android sql android-sqlite

我在使用sqllite数据库的android应用程序中工作。在我的Db中,我需要一个独特的列。但是有些时候这个具有唯一性的列会插入空值。相反,我需要在此列中插入自动增量值。

请在表脚本中提供一个解决方案,以生成一个包含支持唯一和自动增量的列的表。

3 个答案:

答案 0 :(得分:3)

就像下面的SQL Query中一样:

CREATE TABLE Persons
(ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID))

更多信息:MS SQL Server使用IDENTITY keyword执行auto-increment功能。

和SQLite如下查询:

CREATE TABLE failed_banks(id integer primary key, name text, city text, state text, zip integer, acquired_by text, close_date date, updated_date date);

更多信息:INTEGER PRIMARY KEYauto-increment声明SQLite的列。

答案 1 :(得分:0)

如果您需要一个可以插入和更新的列,并且该列仍然具有唯一性,那么您必须以这种方式实现它。

首先使该列为UNIQUE,然后在插入的情况下确保您有一些机制来向该列添加唯一值。在更新和插入的情况下,您需要捕获唯一值异常并确保在异常情况下采取适当的操作。

您可以采取的一些方法是:

如果您需要唯一整数,那么在插入时总是在列中找到最大值并添加1以插入新值。如果是更新整数值,则需要通过首先获取该整数的值来确认该值不存在,然后更新(如果尚未添加)。如果有值,那么你需要有一个逻辑来获得另一个唯一值。

如果列的值不是整数或数字而不是文本,那么您必须先通过先检查存在然后更新/插入来更好地处理插入和更新。

答案 2 :(得分:0)

排序答案:除非是主键字段,否则不能。

如果是UNIQUENOT NULL以及自动递增,那么除了将其作为主键之外别无选择。

CREATE TABLE table_name ( your_field_name INTEGER PRIMARY KEY, ... )

INTEGER PRIMARY KEY这里的东西使它成为自动递增的主键。

Sqlite数据库有一个关键字AUTOINCREMENT,除了与PRIMARY KEY约束关联外,不能使用它。