创建了这样的表后:
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)
我只能通过引入序列来做类似的事情,有没有更直接的方法?
答案 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