2013-10-24 21 views
2

有沒有辦法在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

正在創建'view'不夠嗎? –

+0

cant ..會有兩個同名的對象。另外,由於其他限制,我無法重命名「原始」 – filippo

+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