插入引用另一个字段的值
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
报告 C2
的 C1
值:
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
像这样创建 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
报告 C2
的 C1
值:
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