SQLite触发器分析行数据

时间:2015-10-04 08:35:25

标签: android sqlite triggers

我有一个包含新闻文章的数据库。每篇文章都有一个字段"类别"其中包含" 3,7,9和#34;等类别的序数。我的观点是为多对多模式创建一个包含字段(_id, article_id category_id )的表格,以便按类别提供查询文章。

有没有办法用SQLite中的那些数字分析TEXT字段?将它们拆分为","并使用INSERT处理每个数字。现在我用java做,但我想创建触发器。

我目前的代码是:

private void fillCategoriesTable(Article.Category[] categories, long id) {
    ContentValues cv = new ContentValues();
    cv.put(Article.KEY_FOREIGN_ARTICLE_ID, id);
    for (Article.Category c : categories) {
        int categoryId = c.ordinal();
        cv.put(Article.KEY_CATEGORY_ID, categoryId);
        mDbHelper.getWritableDatabase().insertOrThrow(ArticlesSqlHelper.DATABASE_CATEGORIES_NAME, null, cv);
    }
}

正如您现在所看到的,我使用Enum序号作为类别的id。如果我使用触发器,我只需要使用" 3,4,11和#34;并通过昏迷分开它以获得三个不同的ID。然后制作三个插页。

例如,当我从文章

中删除时,此处是从类别表中删除行的触发器
private final String REMOVE_CATEGORIES_TRIGGER = "CREATE TRIGGER delete_categories AFTER DELETE " +
        "ON " + DATABASE_ARTICLES_NAME + " FOR EACH ROW " +
        "BEGIN " +
        "DELETE FROM " + DATABASE_CATEGORIES_NAME + " WHERE " + Article.KEY_FOREIGN_ARTICLE_ID + "=" + "OLD." + Article.KEY_ID + "; " +
        "END;";

但是没有困难因为我只需要文章的id。但是在插入时,我也需要类别ID。

0 个答案:

没有答案