2017-05-08 4 views
-4

私はDBAではないので、この質問をしています。oracle所有者に対するテーブルのユニークなインデックス

select i.index_name, 
     NVL(c.column_name,' '), 
     NVL(c.DESCEND, 'ASC') 
    from all_indexes i, all_ind_columns c 
    where i.index_name = c.index_name 
    and (i.INDEX_TYPE = 'NORMAL' or i.INDEX_TYPE = 'FUNCTION-BASED NORMAL') 
    and i.table_name = name 
    and i.owner = c.index_owner 
    and i.table_owner = owner 
    and c.table_name = name 
    and c.table_owner = owner 
    and i.uniqueness = 'UNIQUE' 
    order by c.index_name, c.column_position 

はインデックスに関して、それは一種の制約チェックです:誰かが下記のクエリの意味が何であるかを教えてくださいすることができます。あなたの考えを共有してください。

答えて

1

「インデックスに関する制約チェック」とはどういう意味ですか?私はこの概念に精通していません。いずれにせよ、この問合せは、データベースの所有者(スキーマ、ユーザー)とそのスキーマ(その所有者が所有する)の表の名前を入力として受け取ります。たとえば、主キーの索引、索引の列または列のセット、および索引が昇順または降順にソートされているかどうかなど、すべての一意の索引(一意の値を実行する索引)がその表で検索されます。これは、スキーマ内のテーブルのユニークなインデックスに関する情報を見つけるための比較的標準的なクエリです。

たとえば、ほとんどのOracleインストールには、標準のサンプル・スキーマ(所有者)HRが付属しています。これには、EMPLOYEESという名前のテーブルがいくつか含まれています。このテーブルには、プライマリキー、従業員ID、従業員電子メールの追加の一意のキーがあります。以下はownernameがそれぞれ'HR''EMPLOYEES'にハードコードされたクエリとその出力です。クエリを書いた人はいずれも、SELECTの最後の2つのカラムにエイリアスを与えなかったので、その理由で出力が醜いように見えることに注意してください。

select i.index_name, 
     NVL(c.column_name,' '), 
     NVL(c.DESCEND, 'ASC') 
    from all_indexes i, all_ind_columns c 
    where i.index_name = c.index_name 
    and (i.INDEX_TYPE = 'NORMAL' or i.INDEX_TYPE = 'FUNCTION-BASED NORMAL') 
    and i.table_name = 'EMPLOYEES' 
    and i.owner = c.index_owner 
    and i.table_owner = 'HR' 
    and c.table_name = 'EMPLOYEES' 
    and c.table_owner = 'HR' 
    and i.uniqueness = 'UNIQUE' 
    order by c.index_name, c.column_position 
; 

INDEX_NAME  NVL(C.COLUMN_NAME,'') NVL(C.DESCEND,'ASC') 
------------- --------------------- -------------------- 
EMP_EMAIL_UK EMAIL     ASC 
EMP_EMP_ID_PK EMPLOYEE_ID   ASC 
関連する問題