有没有办法在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。
想法?
答案 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