栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在SQLite中使用触发器为特定表设置最大项目数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在SQLite中使用触发器为特定表设置最大项目数?

  1. 您已省略了该
    BEFORE | AFTER
    子句,因此
    BEFORE
    默认情况下为该子句。这意味着您是 在插入 之前( 而不是插入之后)对行进行计数。
  2. 这取决于。首先,当表尚未达到限制时,快速计数查找可以为您节省一些时间,因为您可以避免更复杂的删除。但是,一旦表已满,无论如何都必须删除,因此计数只是要做的其他工作。

这应该工作:

private const val MAX_ITEMS = 3private val TIMESTAMP_FIELD = "timestamp"private val DELETe_FROM_CALL_LOG_TILL_TRIGGER =  String.format(    "CREATE TRIGGER %1$s AFTER INSERT ON %2$s      FOR EACH ROW     BEGIN        DELETe FROM %2$s WHERe _id =         (SELECt _id FROM %2$s ORDER BY %4$s DESC LIMIT 1 OFFSET %3$s);     END;"    , "delete_till_reached_max", TABLE_NAME, MAX_ITEMS, TIMESTAMP_FIELD)

一旦表中有400行,您就可以像这样调用触发器

trg_keep_rowcount_constant
并将其
GROUP BY null HAVINgCOUNT(*) > %3$s
从代码中删除。

演示:https://dbfiddle.uk/?rdbms
= sqlite_3.27&fiddle =
ea3867e20e85927a2de047908771f4f1



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号