2014-01-09 4 views
4

У меня есть несколько таблиц оракула без первичных ключей. Я не могу изменить этот проект базы данных, поскольку он используется несколькими приложениями. Добавление поля Auto increment также не является опцией.Создайте представление с уникальным ключом из таблиц без первичного ключа

для создания Edmx в Entity Framework Мне нужно уникальное поле в таблице. Так что я пытаюсь создать представление с помощью уникального ключа.

Мой стола, как:

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

Читать this и also 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; 
Смежные вопросы