表声明上的列别名

时间:2013-10-24 20:32:45

标签: sql oracle oracle11g

有没有办法在Oracle 11gR2中创建一个包含两个名称的列?

我需要这个原因是后兼容性,在这种情况下可行:

create table test1 (col1 varchar2(10), col2 [some ref to col1]);

insert into test1 values ('test_value');

然后

SQL> select col1 from test1;
test_value

SQL> select col2 from test1;
test_value

SQL Server似乎有一种方法,我正在寻找与之相当的Oracle。

想法?

1 个答案:

答案 0 :(得分:3)

您可以创建VIRTUAL COLUMN

CREATE TABLE test1 (
  col1 VARCHAR2(10),
  col2 VARCHAR2(10) GENERATED ALWAYS AS (col1 || '')
);

INSERT INTO test1 (col1) VALUES ('test_value');
COMMIT;

SELECT * FROM test1;

COL1       COL2     
---------- ----------
test_value test_value 

但是,DML无法操纵虚拟列。在此处阅读更多内容:Oracle Base - Virtual Columns