ITNOA
我使用sqlite_orm库在程序中使用sqlite,并且具有如下表
auto storage = make_storage("test_remove.sqlite",
make_table("objects",
make_column("key_part_1",
&Object::key_part_1),
make_column("key_part_2",
&Object::key_part_2),
make_column("name",
&Object::name),
primary_key(&Object::key_part_1, &Object::key_part_2)));
如您所见,该表具有复合键(key_part_1
和key_part_2
)。
我看到了remove wiki page,并且正如您所看到的,没有关于删除组合键对象的明确文档,但是如果您要使用自定义条件删除对象,请使用remove_all
而不是删除。
所以我的问题是如何有效地从该表中删除对象?有没有使用remove_all的更好方法?
谢谢
答案 0 :(得分:0)
在新的sqlite_orm dev分支中,该库的创建者发布了如下所示的新API
remove(Ids... ids)
如果您有如下对象
struct Object {
int id;
std::string name;
};
并具有如下所示的组合键
auto storage = make_storage("",
make_table("objects",
make_column("id", &Object::id),
make_column("name", &Object::name),
primary_key(&Object::id, &Object::name)));
使用此API,您可以删除如下所示的复合键对象
storage.remove<Object>(1, "Skillet");