Получить Oracle метаданные с первичным ключом - PullRequest
0 голосов
/ 10 апреля 2020

Может ли кто-нибудь помочь мне с Oracle доступом к этим элементам данных и определению Первичного ключа?

Все, что мне нужно, - это четкое определение таблиц, предоставленных для этого запроса

SELECT TotalColumn.*
  FROM 
    (SELECT FirstLevel.*
    --,NULL AS CONSTRAINT_TYPE
    ,'ORACLE' AS DB_Source_Name
    FROM (SELECT  
            A.COLUMN_NAME , 
            A.DATA_TYPE  , 
            A.DATA_LENGTH , 
            A.NULLABLE ,
            A.COLUMN_ID 
            A.DATA_PRECISION ,
            A.DATA_SCALE 
        --(I want to add contraint CONSTRAINT_NAME)
      FROM ALL_TAB_COLUMNS A
    where A.OWNER ='SCHEMA_NAME'AND A.TABLE_NAME = 'TABLE_NAME'
    ) FirstLevel 
) TotalColumn
ORDER BY ORDINAL_POSITION

стек .imgur.com / vEfpy.png

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Вы можете использовать ALL_CONSTRAINTS и ALL_CONS_COLUMNS для получения информации об ограничении.

Ниже приведен запрос, который даст вам имя первичного ключа для столбца. Вы также можете поиграть с этими столами, чтобы получить любой результат.

SELECT
    A.COLUMN_NAME,
    A.DATA_TYPE,
    A.DATA_LENGTH,
    A.NULLABLE,
    A.COLUMN_ID,
    A.DATA_PRECISION,
    A.DATA_SCALE,
    CASE
        WHEN AC.CONSTRAINT_TYPE = 'P' THEN ACC.CONSTRAINT_NAME
    END PRIMARY_KEY_CONS_NAME,
        --(I want to add contraint CONSTRAINT_NAME)
    'ORACLE' AS DB_SOURCE_NAME
FROM
    ALL_TAB_COLUMNS A
    LEFT JOIN ALL_CONS_COLUMNS ACC ON A.COLUMN_NAME = ACC.COLUMN_NAME
                                      AND A.TABLE_NAME = ACC.TABLE_NAME
                                      AND A.OWNER = ACC.OWNER
    LEFT JOIN ALL_CONSTRAINTS AC ON AC.CONSTRAINT_NAME = ACC.CONSTRAINT_NAME
                                    AND AC.OWNER = ACC.OWNER
WHERE
    A.OWNER = 'SCHEMA_NAME'
    AND A.TABLE_NAME = 'TABLE_NAME'
ORDER BY
    A.COLUMN_ID;
0 голосов
/ 10 апреля 2020

Единственная задействованная таблица (на самом деле, это представление) - ALL_TAB_COLUMNS. Это задокументировано в Справочном руководстве по базе данных .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...