如何在 ormlite ( SQLite ) 中进行多列唯一约束
我正在使用 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 );
我想要的是
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` );
在我的模型中,我一直在对唯一列使用以下注释:
@DatabaseField( unique = true )
有没有办法让它发挥作用?
I'm using ormlite for Android and I'm trying to get a multiple column unique-constraint. As of now i'm only able to get a unique constraint on indiviudal columns like this:
CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL UNIQUE ,
`store_item_id` INTEGER NOT NULL UNIQUE ,
`_id` INTEGER PRIMARY KEY AUTOINCREMENT );
and what I want is
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` );
In my model I've been using the following annotations for the unique columns:
@DatabaseField( unique = true )
Is there a way to get this to work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不如使用
注释来代替 - 访问表中的项目时,uniqueIndexName 是否更快?
How about using
annotation instead - is it a matter of the uniqueIndexName being faster when accessing items in the table?
编辑:
正如 @Ready4Android 所指出的,我们在 4.20 版本中添加了对
uniqueCombo
注释字段的支持。这是文档:使用之间应该没有性能差异此机制与下面提到的
uniqueIndexName
不同。是的。您无法使用
unique=true
标记来执行此操作,但可以使用唯一索引来执行此操作。这将创建一个索引来实现唯一性,但我怀疑 unique=true 无论如何都有一个隐藏索引。请参阅文档:
我将考虑允许多个唯一字段。可能并非所有数据库类型都支持。
Edit:
As @Ready4Android pointed out, we've since added in version 4.20 support for
uniqueCombo
annotation field. Here are the docs:There should be no performance differences between using this mechanism versus the
uniqueIndexName
mentioned below.Yes. You can't do this with the
unique=true
tag but you can with a unique index.This will create an index to accomplish the unique-ness but I suspect that the unique=true has a hidden index anyway. See the docs:
I will look into allowing multiple unique fields. May not be supported by all database types.