sqlite 触发器会触发其他触发器吗?

2024-01-01

我正在尝试在 sqlite 中实现与“ON UPDATE CURRENT_TIMESTAMP”MySQL 功能等效的功能。 我的想法是使用这样的触发器:

CREATE TRIGGER last_update_trigger
AFTER UPDATE
ON mytable
FOR EACH ROW
BEGIN
UPDATE mytable SET last_update = CURRENT_TIMESTAMP WHERE id = old.id;
END

但这有一个问题。每次该表的记录发生更新时,触发器都会触发同一记录的新更新。这应该会一次又一次地触发触发器,从而导致更新的无限循环。

这真的会发生吗?我的触发器中的更新会再次触发触发器吗? 我可以避免触发触发器内的触发器吗?


我们正在谈论 SQLite,对吧?

最初,递归触发器(上面怀疑的无限循环)是not专门支持防止此问题。它们现在受支持,但默认情况下处于关闭状态。你可以,理论上 http://sqlite.org/pragma.html#pragma_recursive_triggers,重新打开它们

PRAGMA recursive_triggers = ON;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlite 触发器会触发其他触发器吗? 的相关文章

  • 分配给 SQLite 内存数据库的内存大小

    如果使用下面的语法创建一个内存中的sqlite数据库 那么分配给它的最大内存大小是多少 my dbh DBI gt connect dbi SQLite dbname memory 如果内存数据库的大小大于最大可用内存 将会发生什么情况 假
  • 设置 MySQL 触发器

    我听说过有关触发器的事情 我有几个问题 什么是触发器 我该如何设置它们 除了典型的 SQL 内容之外 是否还应该采取任何预防措施 触发器允许您在发生某些事件 例如 插入表 时在数据库中执行某个功能 我无法具体评论mysql 注意事项 触发器
  • 编写 PHP SQL 更新语句的最佳方法

    我有这个 PHP SQL 语句 updateCategory UPDATE category SET name name description description parent parent active active WHERE i
  • Core Data 与 SQLite 3 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无法读取第 0 行,第 -1 列

    我正在尝试复制使用 SQLite 管理器创建的数据库 我在其中执行了以下操作 CREATE TABLE android metadata locale TEXT DEFAULT en US and INSERT INTO android m
  • SQLite:*防止*主键值在删除所有行后重置[重复]

    这个问题在这里已经有答案了 我有一个 SQLite 表 有几列 包括一个 ID 列 它是 INTEGER PRIMARY KEY 当我插入时 该值会按预期增加 但是 当我删除所有行时 该列的值在下一次插入时恢复为 1 有没有办法让列值从删除
  • 仅将唯一行插入 SQLite (python)

    我在用着cursor executemany将 CSV 文件中的批量行插入到 SQLite 表中 根据主键字段 其中一些行预计会重复 当我执行该命令时 可以预见的是 我会收到完整性错误 并且不会插入任何内容 如何有选择地仅插入非重复行 而无
  • SQLite 的不区分大小写的 UTF-8 字符串排序规则 (C/C++)

    我正在寻找一种方法 以不区分大小写的方式对 C 中的 UTF 8 字符串进行比较和排序 以便在SQLite 中的自定义排序规则函数 http www sqlite org c3ref create collation html 该方法应该i
  • SQLite 中的累积求和值

    我正在尝试在 SQLite 中执行值的累积和 我最初只需要对一列求和并获得代码 SELECT t MyColumn SELECT Sum r KeyColumn1 FROM MyTable as r WHERE r Date lt t Da
  • PHP 如何查找自日期时间以来经过的时间? [复制]

    这个问题在这里已经有答案了 如何查找自日期时间戳记以来经过的时间2010 04 28 17 25 43 最终输出文本应该是这样的xx Minutes Ago xx Days Ago 大多数答案似乎都集中在将日期从字符串转换为时间 您似乎主要
  • 标记个体内事件发生后发生的日期

    我有一组长格式的数据 每人几行 人 id 其中事件 事件 1 应该只发生一次 事件发生后 该人不应再有任何数据 如果事件发生后出现任何记录 我想使用名为 flag flag 1 的新变量创建一个查询 例如 下面标记了 id 5 因为在该人的
  • Jython 的 sqlite3 模块

    我正在使用 Java 脚本 API 从我的 Java 应用程序执行一些外部 Python 脚本 python 脚本使用 sqlite3 模块 应用程序的执行导致错误 ImportError No module named sqlite3 当
  • 未由 SQLite JDBC 驱动程序实现

    我已经使用以下命令成功创建了 SQLite 数据库的 ColdFusion 数据源sqlitejdbc v056 jar http code google com p sqlitebot downloads detail name sqli
  • Android - SimpleCursorAdapter 是否允许像 BaseAdapter 一样的多种布局?

    我知道你可以创建一个自定义Adapter延伸BaseAdapter并创建各种布局 这些布局可以根据哪一行进行扩展AdapterView is at 但是有没有什么方法可以通过SimpleCursorAdapter 例如 我有一个数据库 我想
  • SQLite:如何命名“值”子选择中的列

    在 postgres 中我可以说 test select from values 1 3 7 as foo id id 1 3 7 3 rows 这意味着这样的子选择随后可以使用 foo id 等与其他表连接 在 sqlite 中我可以说
  • 在 SQL 语句的 WHERE 子句中将 string 转换为 int

    我想实现这个目标 SELECT FROM linkledger WHERE toInt reputation gt 100 但是函数 toInt 不存在 有吗 我现在发现了这个 但不起作用 这意味着我有一个更根本的问题 因为这是正确的 SE
  • 将儒略时间戳转换为 UNIX 中的常规时间

    我需要使用 Bash 将 UNIX 中的 Julian 时间戳转换为常规时间戳 在 Tandem OS 上 转换非常简单 例子 212186319010244541 OLSAPP SYSTST 1 gt interprettimestamp
  • 如何在 SQLite 中获取最后插入的 ID?

    SQLite 中是否有任何内置函数可以获取最后插入的行 ID 例如 在 mysql 中我们有LAST INSERT ID 这种功能 对于 sqlite 任何可用于执行相同过程的函数 请帮我 Thanks SQLite 这可以使用SQLite
  • 如何在sqlite中添加特定数量的空行?

    我有一个SQLite文件 我想添加2550 empty NULL rows 我可以使用此代码添加一个空行 INSERT INTO my table DEFAULT VALUES 但我需要 2550 行 有什么捷径吗 我不想执行相同的代码 2
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库

随机推荐