我有一个SQL插件,应该增加version
列并更新主键冲突的time
列。
insert into items (pk, time, version, name)
values (9999, now(), 1)
on conflict (pk) do update set
time = now(),
version = items.version + 1,
name = excluded.name
一切正常,直到我在更新发生时添加触发器来归档行。因此,如果版本为1的行,并且稍后会发生插入,则上述查询会将version
列增加为2.但我希望版本1的旧行转到{{1表格。
但是当我在下面添加触发器时,上面的插件并没有像没有这个触发器那样更新版本和时间列。我该如何修复扳机?是因为我正在做archive
,还是因为它是return old
触发器?
before update
答案 0 :(得分:2)
是的,适用于return old
,返回旧的内容会更改要使用旧值更新的记录值,无论如何,您可以根据需要执行return new;
语句,而我将在更新后触发器中执行此操作,逻辑是在列表版本更新后进行归档,而不是在更新之前进行归档