插入引用另一个字段的值

Insert value referencing another field

像这样创建 table 后:

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)

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

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

INSERT INTO T1 (C2)
VALUES (NULL);

然后,当您 select 时,使用 COALESCE 报告 C2C1 值:

SELECT C1, COALESCE(C2, C1) AS C2
FROM T1;

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

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

插入是使用默认值完成的。

INSERT INTO T1 VALUES DEFAULT, DEFAULT