Pza*_*nno 9 sql sqlite unique-constraint ormlite
我正在使用Android的ormlite,我正在尝试获得多列唯一约束.到目前为止,我只能对这样的个别列进行独特约束:
CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL UNIQUE ,
`store_item_id` INTEGER NOT NULL UNIQUE ,
`_id` INTEGER PRIMARY KEY AUTOINCREMENT );
Run Code Online (Sandbox Code Playgroud)
而我想要的是
CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL ,
`store_item_id` INTEGER NOT NULL ,
`_id` INTEGER PRIMARY KEY AUTOINCREMENT,
UNIQUE( `store_group_id`, `store_item_id` );
Run Code Online (Sandbox Code Playgroud)
在我的模型中,我一直在使用以下注释用于唯一列:
@DatabaseField( unique = true )
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个工作?
Rea*_*oid 14
如何使用
@DatabaseField (uniqueCombo = true)
String myField;
Run Code Online (Sandbox Code Playgroud)
而是注释 - 访问表中的项目时,uniqueIndexName的速度是否更快?
编辑:
正如@ Ready4Android指出的那样,我们已经在版本4.20中添加了对uniqueCombo注释字段的支持.以下是文档:
使用此机制与uniqueIndexName下面提到的机制之间应该没有性能差异.
是.您不能使用unique=true标记执行此操作,但可以使用唯一索引.
@DatabaseField(uniqueIndexName = "unique_store_group_and_item_ids")
int store_group_id;
@DatabaseField(uniqueIndexName = "unique_store_group_and_item_ids")
int store_item_id;
Run Code Online (Sandbox Code Playgroud)
这将创建一个索引来完成唯一性,但我怀疑unique = true无论如何都有一个隐藏索引.查看文档:
我将考虑允许多个唯一字段.所有数据库类型可能都不支持.