如何使用复合键删除sqlite_orm中的条目

时间:2019-05-10 12:48:01

标签: c++ sqlite orm

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_1key_part_2)。

我看到了remove wiki page,并且正如您所看到的,没有关于删除组合键对象的明确文档,但是如果您要使用自定义条件删除对象,请使用remove_all而不是删除。

所以我的问题是如何有效地从该表中删除对象?有没有使用remove_all的更好方法?

谢谢

1 个答案:

答案 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");