데이터베이스 내에서 현재 사용자가 접근 권한을 가진 클래스에 대해 생성된 인덱스에 대한 키 정보를 보여준다.
속성명 |
데이터 타입 |
설명 |
---|---|---|
index_name |
VARCHAR(255) |
인덱스명 |
class_name |
VARCHAR(255) |
인덱스가 속한 클래스명 |
key_attr_name |
VARCHAR(255) |
키를 구성하는 속성의 이름 |
key_order |
INTEGER |
키에서 속성이 위치한 순서. 0부터 시작함 |
asc_desc |
VARCHAR(4) |
속성 값의 순서가 내림차순이면 ‘DESC’, 그렇지 않으면 ‘ASC’ |
key_prefix_length |
INTEGER |
키로 사용할 prefix의 길이 |
CREATE VCLASS db_index_key (index_name, class_name, key_attr_name, key_order, key_prefix_length)
AS
SELECT k.index_of.index_name, k.index_of.class_of.class_name, k.key_attr_name, k.key_order
CASE k.asc_desc
WHEN 0 THEN 'ASC'
WHEN 1 THEN 'DESC' ELSE 'UNKN' END,
k.key_prefix_length
FROM _db_index_key k
WHERE (CURRENT_USER = 'DBA' OR
{k.index_of.class_of.owner.name}
subseteq (
SELECT set{CURRENT_USER} + coalesce(sum(set{t.g.name}), set{})
from db_user u, table(groups) as t(g)
where u.name = CURRENT_USER ) OR {k.index_of.class_of}
subseteq (
SELECT sum(set{au.class_of})
FROM _db_auth au
WHERE {au.grantee.name} subseteq (
SELECT set{CURRENT_USER} + coalesce(sum(set{t.g.name}), set{})
from db_user u, table(groups) as t(g)
where u.name = CURRENT_USER ) AND
au.auth_type = 'SELECT'));
다음 예제에서는 클래스의 인덱스 키 정보를 검색한다.
SELECT class_name, key_attr_name, index_name
FROM db_index_key
ORDER BY class_name, key_order;
'athlete' 'code' 'pk_athlete_code'
'city' 'city_name' 'pk_city_city_name'
'db_serial' 'name' 'pk_db_serial_name'
'db_user' 'name' 'i_db_user_name'
'event' 'code' 'pk_event_code'
'female_event' 'code' 'pk_event_code'
'game' 'host_year' 'pk_game_host_year_event_code_athlete_code'
'game' 'event_code' 'fk_game_event_code'
'game' 'athlete_code' 'fk_game_athlete_code'
…