android – 使用SQLite触发器来更新“LastModified”字段

android – 使用SQLite触发器来更新“LastModified”字段,第1张

概述这可能更多的是一个设计问题,但是在这里.我正在编写一个 Android应用程序,该应用程序使用与MySQL数据库同步的本地SQLite数据库(具有多个表).我只想更新数据库中的修改行.为了做到这一点,我在每一行中添加一列“last_modified”,这些列表示该行被添加/更新/替换/等等的时间. 我是数据库 *** 作的新手,但是我看到触发器可能是最好的方法.我有几个有关触发器,SQLite和Andro 这可能更多的是一个设计问题,但是在这里.我正在编写一个 Android应用程序,该应用程序使用与MysqL数据库同步的本地sqlite数据库(具有多个表).我只想更新数据库中的修改行.为了做到这一点,我在每一行中添加一列“last_modifIEd”,这些列表示该行被添加/更新/替换/等等的时间.

我是数据库 *** 作的新手,但是我看到触发器可能是最好的方法.我有几个有关触发器,sqlite和AndroID的问题.

我已经阅读了这个链接:on update current_timestamp with SQLite它基本上说我正在使用正确的方法.我的问题是:

>我应该在哪里放db.execsql(“CREATE TRIGGER …”)语句?在创建表之前或之后?
>我可以为我的数据库中的每个表使用相同的Trigger吗?即,触发器可以自动检测哪些表和行正被更新/插入/替换等.并通知设置该行的“last_modifIEd”字段,或者我必须为每个表创建一个单独的触发器?
>由于我对数据库 *** 作非常新鲜,您能否提供一个执行上述行为的示例AndroID Trigger语句,或者为示例提供资源?

或者如果触发器是一个坏主意,有没有更好的选择?

谢谢.

@H_301_15@解决方法 一个简短而甜美的答案给你:

>之后,所以触发器有一个有效的表来引用.
>您需要为您想要影响的每个表/列组合执行CREATE TRIGGER.数据库不会假设,因为另一个表有一个last_modifIEd列,你希望这个行为相同…
>您的链接中的触发器是可执行的(我自己使用它),只需更改表/列名称.

最后,使用这样的触发器是我知道维护last_modifIEd或last_accessed时间戳的最简单的方法.

我的触发器(以java形式):

private static final String UPDATE_TIME_TRIGGER =    "CREATE TRIGGER update_time_trigger" +     "  AFTER UPDATE ON " + table_name + " FOR EACH ROW" +    "  BEGIN " +        "UPDATE " + table_name +         "  SET " + TIME + " = current_timestamp" +        "  WHERE " + ID + " = old." + ID + ";" +    "  END";

加成

根据SQLite website,您需要为每种类型的 *** 作创建一个触发器.换句话说,你不能使用:

CREATE TRIGGER trigger_name   AFTER UPDATE,INSERT ...

从您最近的评论中,您可能已经想出了处理INSERT语句的最佳方法:

CREATE table foo (  _ID INTEGER PRIMARY KEY,last_modifIEd TIMESTAMP NOT NulL DEFAulT current_timstamp);

在此表中,您不需要为INSERT语句创建时间戳触发器,因为已经完成. (有趣的是:INTEGER PRIMARY KEY隐式地将autoINCREMENT NOT NulL以及默认的增量值添加到我们的_ID列.)

总结

以上是内存溢出为你收集整理的android – 使用SQLite触发器来更新“LastModified”字段全部内容,希望文章能够帮你解决android – 使用SQLite触发器来更新“LastModified”字段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1133637.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存