插入引用另一个字段的值

时间:2019-05-31 10:12:17

标签: hsqldb

创建了这样的表后:

CREATE TABLE T1 (
    C1 INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1) PRIMARY KEY,
    C2 INTEGER);

我想在C2中插入与C1相同的值:

INSERT INTO T1(C1, C2) VALUES (DEFAULT, C1)

我只能通过引入序列来做类似的事情,有没有更直接的方法?

2 个答案:

答案 0 :(得分:1)

如果不更改C2值,则可以将其声明为GENERATED列。

CREATE TABLE T1 (
C1 INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1) PRIMARY KEY,
C2 INTEGER GENERATED ALWAYS AS (C1));

插入使用DEFAULT值完成。

INSERT INTO T1 VALUES DEFAULT, DEFAULT

答案 1 :(得分:0)

我对此没有解决方案,因为在进行插入操作时,自动生成的值可能甚至不可用。但是,可以使用的一种数据层解决方法是,只要您希望将NULL的值反映在C2中,就将它们插入C1即可。也就是说,在以下情况下可使用此插入:

INSERT INTO T1 (C2)
VALUES (NULL);

然后,当您选择时,使用COALESCE报告C1的{​​{1}}值:

C2