2014-01-09 33 views
4

我有幾個沒有主鍵的oracle表。我無法修改此數據庫設計,因爲它被多個應用程序使用。添加自動增量字段也不是一個選項。使用不帶主鍵的表中的唯一鍵創建視圖

爲了在實體框架中生成Edmx我需要表中唯一字段。 所以我想要做的是創建一個唯一的關鍵視圖。

我的表像:

CREATE TABLE "ENTITLEMENTS" 
( 
    "TOKEN" VARCHAR2(40 CHAR), 
    "ENROLLED_FUNCTION" VARCHAR2(9 CHAR) 
); 

有沒有辦法從視圖顯示的自動生成的標識字段。如果是這樣如何?

+0

您可以創建唯一鍵或主鍵(最初禁用)視圖 – SriniV

+0

我可以做即使我在桌子上沒有主鍵? 如果是這樣怎麼樣? – PAVITRA

回答

3

試試這個

Select row_number() OVER (ORDER BY TOKEN,ENROLLED_FUNCTION),TOKEN,ENROLLED_FUNCTION From ENTITLEMENTS

2

閱讀thisalso this

例如

CREATE TABLE DATASET (VAL1 CHAR (1 CHAR), 
        VAL2 VARCHAR2 (10 CHAR), 
        VAL3 NUMBER); 

INSERT INTO 
     DATASET (VAL1, 
       VAL2, 
       VAL3) 
VALUES 
     ('b', 
     'b-details', 
     2); 

INSERT INTO 
     DATASET (VAL1, 
       VAL2, 
       VAL3) 
VALUES 
     ('a', 
     'a-details', 
     1); 

INSERT INTO 
     DATASET (VAL1, 
       VAL2, 
       VAL3) 
VALUES 
     ('c', 
     'c-details', 
     3); 

INSERT INTO 
     DATASET (VAL1, 
       VAL2, 
       VAL3) 
VALUES 
     ('a', 
     'dup', 
     4); 

INSERT INTO 
     DATASET (VAL1, 
       VAL2, 
       VAL3) 
VALUES 
     ('c', 
     'c-details', 
     5); 

COMMIT; 


CREATE VIEW TESTER (C1, 
       C2, 
       C3 UNIQUE RELY DISABLE NOVALIDATE) 
AS 
    SELECT 
      VAL1, 
      VAL2, 
      VAL3 
    FROM 
      DATASET;