【问题标题】:Detect if a row was modified by an INSERT OR REPLACE?检测一行是否被 INSERT OR REPLACE 修改?
【发布时间】:2017-05-22 12:02:19
【问题描述】:

假设我们有一张这样的表:

CREATE TABLE example (
animal VARCHAR NOT NULL,
color VARCHAR NOT NULL,
name VARCHAR,
UNIQUE(colA, colB))

然后我们执行如下命令:

INSERT OR REPLACE INTO example (animal, color, name)
VALUES ("animal", "cat", "mittens")

有没有办法判断整行的值是否发生了变化?例如,如果在此命令之前,表有以下行:

animal = "cat", color = "orange", name = NULL

它会改变,因为name 改变了。

但如果命令之前的行已经是:

animal = "cat", color = "orange", name = "mittens"

那么就没有变化了。

遗憾的是,changes() 函数似乎在这两种情况下都返回 1。是否有一些东西表明某些值实际发生了变化,或者哪些列发生了变化?

【问题讨论】:

标签: sql sqlite


【解决方案1】:

INSERT 命令不返回任何信息,除了新行的rowid,这在这里没有帮助。

因此,您必须执行 SELECT 才能获取旧值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2016-08-09
    • 2023-03-27
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多