Subject | Re: Unique key fieldnames? |
---|---|
Author | Steve Harp |
Post date | 2005-05-05T21:06:48Z |
--- In IBObjects@yahoogroups.com, "Steve Harp" <steve@h...> wrote:
select ri.rdb$index_name AS KeyName,
ri.rdb$relation_name AS TableName,
rs.rdb$field_name AS FieldName,
rs.rdb$field_position AS FieldPos
from rdb$indices ri
join rdb$relations rr on (rr.rdb$relation_name = ri.rdb$relation_name)
join rdb$index_segments rs on (rs.rdb$index_name = ri.rdb$index_name)
where (ri.rdb$unique_flag = 1) and
(rr.rdb$system_flag = 0)
Order by ri.RDB$Relation_Name, rs.rdb$index_name, rs.rdb$field_position;
Steve
> Hi All,I found something that seems to give me what I need:
>
> Is there a IBO component method or a query I can use to get a list of
> the fieldnames of a specified table which are used in primary keys or
> unique indexes? For instance, if I have a table called MyTable with a
> primary key field of 'ID' and a unique index on the 'Name' field, how
> would I get a list (TStrings) of these two fieldnames?
select ri.rdb$index_name AS KeyName,
ri.rdb$relation_name AS TableName,
rs.rdb$field_name AS FieldName,
rs.rdb$field_position AS FieldPos
from rdb$indices ri
join rdb$relations rr on (rr.rdb$relation_name = ri.rdb$relation_name)
join rdb$index_segments rs on (rs.rdb$index_name = ri.rdb$index_name)
where (ri.rdb$unique_flag = 1) and
(rr.rdb$system_flag = 0)
Order by ri.RDB$Relation_Name, rs.rdb$index_name, rs.rdb$field_position;
Steve