检测行是否入或替换修改

  • 本文关键字:替换 修改 是否 sql sqlite
  • 更新时间 :
  • 英文 :


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

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。是否有某些内容表明某些值实际上已更改,或者哪些列发生了更改?

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

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

最新更新