我正在寻找向预先存在的表添加一个新列,该表填充了值。新专栏将是NOT NULL
,因此对于每个预先存在的行,它都需要一个值。
我正在寻找此列上的初始值,该初始值是根据创建列时表中的其他值计算的,并且only在创建列时。
我有一个非常具体的用例,所以我不是在寻找解决方法。我将给出一个非常简单的例子来说明我正在寻找的内容:
假设我有这些数据:
CREATE TABLE numbers (
value1 INTEGER NOT NULL,
value2 INTEGER NOT NULL
);
INSERT INTO numbers(value1, value2) VALUES (10, 20), (2, 5);
我想创建一个新专栏value3
on the numbers
表在创建时始终等于其对应的表的总和value1
and value2
列。
E.g.:
ALTER TABLE numbers ADD COLUMN value3 INTEGER;
/* ... some more logic which calculates the initial values ... */
ALTER TABLE numbers
ALTER COLUMN value3 SET NOT NULL;
完成此操作后,我想要以下数据:
-- The 3rd value will be the sum of the first 2 values
SELECT * FROM numbers;
value1 | value2 | value3
-------+--------+-------
10 | 20 | 30
2 | 5 | 7
我稍后需要更新数据,也许会破坏这种关系value3 === (value1 + value2)
:
UPDATE numbers SET value3=9823 WHERE value1=10;
如何实现将计算出的初始值插入到value3
column?