在同一个表中插入派生列

时间:2014-11-15 11:52:28

标签: oracle derived

我创建了这个测试表db并添加了3列col,col2和cal3。我希望cal 3值来自col + col2。不允许使用insert satament插入数据。 什么是插入值的sql语句。

表创建语句如下: -

create table db
 (
 col number(10),col2 number(20), cal3 number(10) generated always as (col+col2)
 );

2 个答案:

答案 0 :(得分:0)

由于您有计算列,您必须指定插入的列:

insert into db (col, col2) values (10, 20);

上面插入后的select * from db会给你:

| COL | COL2 | CAL3 |
|-----|------|------|
|  10 |   20 |   30 |

答案 1 :(得分:0)

虚拟列值始终使用定义的逻辑动态生成。

INSERT语句应该具有用于​​CAL3的列的值。否则,CAL3的值将为NULL。

场景1 :(仅限COL字段的值)

INSERT INTO DB (COL) VALUES(100);

表DB的输出如下。

SELECT * FROM DB; 

COL | COL2 | CAL3
------------------
100  (null) (null)

场景2 :( COL和COL2字段的值)

INSERT INTO DB (COL,COL2) VALUES(100,200);

表DB的输出如下。

SELECT * FROM DB; 

COL | COL2 | CAL3
------------------
100   200    300