使用组合两列的默认值创建表

Jay*_*Jay 2 oracle

是否可以创建一个包含两列值的列的表?这样的事情:

create table test1(number1 decimal(6,2),number2 decimal(6,2),total decimal(6,2)DEFAULT(number1 + number2));

Ton*_*ews 5

是的,在11G.它被称为"虚拟"列.语法是:

create table test1
 ( number1 number(6,2),
   number2 number(6,2),
   total number(6,2) generated always as (number1+number2) );
Run Code Online (Sandbox Code Playgroud)

(Oracle AFAIK中没有DECIMAL数据类型,因此我使用了NUMBER.)

另见:文档

注意"生成的始终"关键字是可选的.

这里描述 "as"之后允许的表达类型.