检测INSERT或REPLACE是否修改了行?

时间:2017-05-22 12:02:19

标签: 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。是否有某些东西可以表明某些值实际发生了变化,或者哪些列发生了变化?

1 个答案:

答案 0 :(得分:0)

除了新行的is likely to perform better under most circumstances, assuming you have an index on之外,INSERT命令不会返回任何信息,这对此没有帮助。

所以你必须做一个SELECT来获得旧值。