使用SQLITE/Room表列作为函数参数



所以我遇到了以下方面:

sqlite日期

sqlite日期函数

它解释了如何在SQLITE中使用日期函数(这是sql中日期添加的等价项(

因此,我想出了一个主意,将日期函数参数(间隔、值(存储在表中,我想在触发器中使用这些参数。这看起来像这样:

database.execSQL(
"CREATE TRIGGER IF NOT EXISTS tr_afMR " +
"AFTER INSERT ON Table1 " +
"BEGIN  " +
"UPDATE Table2 SET nextRepeatDate = date(nextRepeatDate,+interval repeatmentType)" +
"WHERE NEW.idTable2=Table2.idTable; " +
"END;");

在这种情况下,interval(=1,2,..(和repeatmentType(DAY,MONTH,YEAR(是Table2中的参数,但问题是sqlite无法将表2列识别为参数:'(', ')', '.', BETWEEN or IN expected, got 'repeatmentType'

是否可以将sqlite中的表列用作params?或者这种函数只能在sql中使用吗?

函数date()的第二个参数是字符串,您可以通过连接intervalrepeatmentType:来构造它
CREATE TRIGGER IF NOT EXISTS tr_afMR 
AFTER INSERT ON Table1 
BEGIN  
UPDATE Table2 
SET nextRepeatDate = date(nextRepeatDate, interval || ' ' || repeatmentType)
WHERE idTable = NEW.idTable2; 
END;

表达式interval || ' ' || repeatmentType将被评估为类似于'3 day'的东西。不需要+符号。

相关内容

  • 没有找到相关文章

最新更新