我有一个包含新闻文章的数据库。每篇文章都有一个字段"类别"其中包含" 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。