H2使用计算列表达式

时间:2017-12-31 16:07:49

标签: sql h2

我如何在H2中定义一个computedColumnExpression,它会随着行的每次更新而增加行的字段,并从零开始。

好吧,根据定义,每次发生更新时都会运行computedColumnExpression。但

  • 如何引用更新行的usecount字段的先前值
  • 如何处理初始插入?

我会从像

这样的列定义开始
"usecount" INT4 (1+(SELECT IFNULL("usecount",0) from "data" WHERE ID=XXXX))

但是我应该为XXXX使用什么?

我查看了触发器,并考虑在newRow方法中更新fire,但这似乎没有任何效果。

鉴于第一个答案和我不成功的尝试,我需要提一下表已经存在,我需要表定义为ALTER TABLE "data" ADD COLUMN。我不会想到它会有所作为.-(

1 个答案:

答案 0 :(得分:1)

你可以使用这样的声明:

create table foo (pk int primary key, 
                  usecount int as usecount + 1);

...最右边的usecount引用前一个值。插入行时只需插入0值:

insert into foo values (42, 0);

...会自动将值增加到1

如果您已拥有该表,则可以分两步添加该列:

alter table foo add column usecount int default 0;
alter table foo alter column usecount int as usecount + 1;