假设我们有一个像这样的表:
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
。是否有某些东西可以表明某些值实际发生了变化,或者哪些列发生了变化?
答案 0 :(得分:0)
除了新行的is likely to perform better under most circumstances, assuming you have an index on
之外,INSERT命令不会返回任何信息,这对此没有帮助。
所以你必须做一个SELECT来获得旧值。