假设我们有一个这样的表:
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 才能获取旧值。