是否可以创建一个包含两列值的列的表? 像这样的东西:
创建表test1 ( number1十进制(6,2), number2十进制(6,2), 总小数(6,2)DEFAULT(number1 + number2) );
答案 0 :(得分:5)
是的,在11G。它被称为“虚拟”列。语法是:
create table test1
( number1 number(6,2),
number2 number(6,2),
total number(6,2) generated always as (number1+number2) );
(Oracle AFAIK中没有DECIMAL数据类型,所以我使用了NUMBER。)
另请参阅:documentation
注意“生成的始终”关键字是可选的。
“as”之后允许的表达类型被描述为here。
答案 1 :(得分:0)
您需要使用计算列。
答案 2 :(得分:0)
您可以使用触发器执行此操作:
create table test1
(number1 decimal(6,2),
number2 decimal(6,2),
total decimal(6,2));
CREATE TRIGGER test1_bi
BEFORE INSERT ON test1
FOR EACH ROW
BEGIN
IF :new.total is NULL THEN
:NEW.TOTAL := :new.number1 + :new.number2;
END IF;
END test1_bi;
INSERT INTO test1(number1, number2) VALUES(1, 2);
SELECT * FROM test1;
在SELECT之后,你会发现TOTAL的值为3,正如预期的那样。
分享并享受。