android中带有更新的Sqlite触发器
当我尝试实现一个触发器时,该触发器将在插入时更新表。如果表中已有articleId,则articleIsLiked应更改为0,如果没有,则应将articleId和articleIsLiked插入为1。当前,当我进行插入时,每次尝试运行插入查询而不是更新记录时,都会生成一条新记录android中带有更新的Sqlite触发器,sqlite,android-sqlite,Sqlite,Android Sqlite,当我尝试实现一个触发器时,该触发器将在插入时更新表。如果表中已有articleId,则articleIsLiked应更改为0,如果没有,则应将articleId和articleIsLiked插入为1。当前,当我进行插入时,每次尝试运行插入查询而不是更新记录时,都会生成一条新记录 CREATE TRIGGER test_update AFTER INSERT ON articlesTable BEGIN INSERT INTO articlesTable ( articleId, artic
CREATE TRIGGER test_update
AFTER INSERT ON articlesTable
BEGIN
INSERT INTO articlesTable ( articleId, articleIsLiked)
VALUES(NEW.articleId, 1) ON DUPLICATE KEY UPDATE
articleIsLiked = 0;
END;
articlesTable
id PK
articleId int
articleIsLiked int
不能使用触发器将插入更改为更新 最简单的方法是在代码中:
db.beginTransaction();
试一试{
ContentValues cv=新的ContentValues();
long c=DatabaseUtils.queryNumEntries(db,“articlesTable”,
“articleId=”+id);
如果(c>0){
cv.put(“Articleislike”,0);
db.update(“articlesTable”,cv,“articleId=“+id,null”);
}否则{
cv.put(“articleId”,id);
cv.put(“Articleislike”,1);
db.插入(“articlesTable”,空,cv);
}
db.setTransactionSuccessful();
}最后{
db.endTransaction();
}
当您确实需要更新时,为什么要运行INSERT?也就是说,当您查看一个新项目并尝试喜欢它时,它应该插入到数据库中,但如果您再次尝试喜欢它,它应该将以前保存的1
值更改为0