<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://in.compucrete.com/index.php?action=history&amp;feed=atom&amp;title=Interbase_System_Table_Queries_%28_RDB%24_%29</id>
	<title>Interbase System Table Queries ( RDB$ ) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://in.compucrete.com/index.php?action=history&amp;feed=atom&amp;title=Interbase_System_Table_Queries_%28_RDB%24_%29"/>
	<link rel="alternate" type="text/html" href="http://in.compucrete.com/index.php?title=Interbase_System_Table_Queries_(_RDB$_)&amp;action=history"/>
	<updated>2026-05-15T16:10:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://in.compucrete.com/index.php?title=Interbase_System_Table_Queries_(_RDB$_)&amp;diff=286&amp;oldid=prev</id>
		<title>WikiAdmin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://in.compucrete.com/index.php?title=Interbase_System_Table_Queries_(_RDB$_)&amp;diff=286&amp;oldid=prev"/>
		<updated>2023-07-14T12:58:50Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:58, 14 July 2023&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff::1.12:old-285:rev-286 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>http://in.compucrete.com/index.php?title=Interbase_System_Table_Queries_(_RDB$_)&amp;diff=285&amp;oldid=prev</id>
		<title>Chanson at 21:09, 16 December 2021</title>
		<link rel="alternate" type="text/html" href="http://in.compucrete.com/index.php?title=Interbase_System_Table_Queries_(_RDB$_)&amp;diff=285&amp;oldid=prev"/>
		<updated>2021-12-16T21:09:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Interbase Databases have tables of data used to define the database structure.  These tables all have rdb$ prefixes.&lt;br /&gt;
&lt;br /&gt;
These examples demonstrate how to extract specific data from these tables. &lt;br /&gt;
&lt;br /&gt;
Select all fields from all tables:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
select rrf.rdb$field_name &amp;quot;Field Name&amp;quot;,rdb$Relation_name,rdb$field_type &amp;quot;Field Type&amp;quot;&lt;br /&gt;
 from rdb$relation_fields rrf&lt;br /&gt;
inner join rdb$fields rf on rf.rdb$field_name=rrf.rdb$field_source&lt;br /&gt;
where substr(rrf.rdb$field_name,1,4) not in ('RDB$','TMP$')&lt;br /&gt;
order by rrf.rdb$relation_name,rrf.rdb$field_position&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Select all fields with &amp;quot;SESSION&amp;quot; as part of the name:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
select rrf.rdb$field_name &amp;quot;Field Name&amp;quot;,rdb$Relation_name &amp;quot;Table&amp;quot;,rdb$field_type &amp;quot;Field Type&amp;quot;&lt;br /&gt;
 from rdb$relation_fields rrf&lt;br /&gt;
inner join rdb$fields rf on rf.rdb$field_name=rrf.rdb$field_source&lt;br /&gt;
where substr(rrf.rdb$field_name,1,4) not in ('RDB$','TMP$')&lt;br /&gt;
and rrf.rdb$field_name like '%SESSION%'&lt;br /&gt;
order by rrf.rdb$relation_name,rrf.rdb$field_position&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select all date fields:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
select rrf.rdb$field_name &amp;quot;Field Name&amp;quot;,rdb$Relation_name &amp;quot;Table&amp;quot;,rdb$field_type &amp;quot;Field Type&amp;quot;&lt;br /&gt;
 from rdb$relation_fields rrf&lt;br /&gt;
inner join rdb$fields rf on rf.rdb$field_name=rrf.rdb$field_source&lt;br /&gt;
where substr(rrf.rdb$field_name,1,4) not in ('RDB$','TMP$')&lt;br /&gt;
AND rdb$field_type IN (12,35) &lt;br /&gt;
order by rrf.rdb$relation_name,rrf.rdb$field_position&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
NOTE: Field type 12 is date, and 35 is timestamp.&lt;br /&gt;
&lt;br /&gt;
Example with Field Type Descriptions for a table:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
  RF.RDB$FIELD_NAME FIELD_NAME,&lt;br /&gt;
  CASE F.RDB$FIELD_TYPE&lt;br /&gt;
    WHEN 7 THEN&lt;br /&gt;
      CASE F.RDB$FIELD_SUB_TYPE&lt;br /&gt;
        WHEN 0 THEN 'SMALLINT'&lt;br /&gt;
        WHEN 1 THEN 'NUMERIC(' || F.RDB$FIELD_PRECISION || ', ' || (-F.RDB$FIELD_SCALE) || ')'&lt;br /&gt;
        WHEN 2 THEN 'DECIMAL'&lt;br /&gt;
      END&lt;br /&gt;
    WHEN 8 THEN&lt;br /&gt;
      CASE F.RDB$FIELD_SUB_TYPE&lt;br /&gt;
        WHEN 0 THEN 'INTEGER'&lt;br /&gt;
        WHEN 1 THEN 'NUMERIC('  || F.RDB$FIELD_PRECISION || ', ' || (-F.RDB$FIELD_SCALE) || ')'&lt;br /&gt;
        WHEN 2 THEN 'DECIMAL'&lt;br /&gt;
      END&lt;br /&gt;
    WHEN 9 THEN 'QUAD'&lt;br /&gt;
    WHEN 10 THEN 'FLOAT'&lt;br /&gt;
    WHEN 12 THEN 'DATE'&lt;br /&gt;
    WHEN 13 THEN 'TIME'&lt;br /&gt;
    WHEN 14 THEN 'CHAR(' || ((F.RDB$FIELD_LENGTH / CH.RDB$BYTES_PER_CHARACTER)) || ') '&lt;br /&gt;
    WHEN 16 THEN&lt;br /&gt;
      CASE F.RDB$FIELD_SUB_TYPE&lt;br /&gt;
        WHEN 0 THEN 'BIGINT'&lt;br /&gt;
        WHEN 1 THEN 'NUMERIC(' || F.RDB$FIELD_PRECISION || ', ' || (-F.RDB$FIELD_SCALE) || ')'&lt;br /&gt;
        WHEN 2 THEN 'DECIMAL'&lt;br /&gt;
      END&lt;br /&gt;
    WHEN 27 THEN 'DOUBLE'&lt;br /&gt;
    WHEN 35 THEN 'TIMESTAMP'&lt;br /&gt;
    WHEN 37 THEN 'VARCHAR(' || ((F.RDB$FIELD_LENGTH / CH.RDB$BYTES_PER_CHARACTER)) || ')'&lt;br /&gt;
    WHEN 40 THEN 'CSTRING' || ((F.RDB$FIELD_LENGTH / CH.RDB$BYTES_PER_CHARACTER)) || ')'&lt;br /&gt;
    WHEN 45 THEN 'BLOB_ID'&lt;br /&gt;
    WHEN 261 THEN 'BLOB SUB_TYPE ' || F.RDB$FIELD_SUB_TYPE&lt;br /&gt;
    ELSE 'RDB$FIELD_TYPE: ' || F.RDB$FIELD_TYPE || '?'&lt;br /&gt;
  END FIELD_TYPE,COALESCE(RF.RDB$NULL_FLAG, 0) XX,&lt;br /&gt;
case  COALESCE(RF.RDB$NULL_FLAG, 0) WHEN 0 then  'NULL' else  'NOT NULL' end FIELD_NULL,&lt;br /&gt;
  CH.RDB$CHARACTER_SET_NAME FIELD_CHARSET,&lt;br /&gt;
  DCO.RDB$COLLATION_NAME FIELD_COLLATION,&lt;br /&gt;
  COALESCE(RF.RDB$DEFAULT_SOURCE, F.RDB$DEFAULT_SOURCE) FIELD_DEFAULT,&lt;br /&gt;
  F.RDB$VALIDATION_SOURCE FIELD_CHECK,&lt;br /&gt;
  RF.RDB$DESCRIPTION FIELD_DESCRIPTION&lt;br /&gt;
FROM RDB$RELATION_FIELDS RF&lt;br /&gt;
JOIN RDB$FIELDS F ON (F.RDB$FIELD_NAME = RF.RDB$FIELD_SOURCE)&lt;br /&gt;
LEFT OUTER JOIN RDB$CHARACTER_SETS CH ON (CH.RDB$CHARACTER_SET_ID = F.RDB$CHARACTER_SET_ID)&lt;br /&gt;
LEFT OUTER JOIN RDB$COLLATIONS DCO ON ((DCO.RDB$COLLATION_ID = F.RDB$COLLATION_ID) AND (DCO.RDB$CHARACTER_SET_ID = F.RDB$CHARACTER_SET_ID))&lt;br /&gt;
WHERE (RF.RDB$RELATION_NAME = :TABLE_NAME) AND (COALESCE(RF.RDB$SYSTEM_FLAG, 0) = 0)&lt;br /&gt;
ORDER BY RF.RDB$FIELD_POSITION;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dependencies (Foreign Keys) with fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SELECT rc.RDB$RELATION_NAME AS &amp;quot;fk_table&amp;quot;, &lt;br /&gt;
          flds_fk.rdb$field_name as &amp;quot;fk_field&amp;quot;, &lt;br /&gt;
          rc2.rdb$relation_name as &amp;quot;pk_table&amp;quot;, &lt;br /&gt;
          flds_pk.rdb$field_name as &amp;quot;pk_field&amp;quot;, &lt;br /&gt;
          rc.RDB$CONSTRAINT_NAME AS &amp;quot;constraint_name&amp;quot;, &lt;br /&gt;
          rfc.RDB$CONST_NAME_UQ as &amp;quot;to_index&amp;quot;, &lt;br /&gt;
          flds_fk.rdb$field_position as &amp;quot;position&amp;quot; &lt;br /&gt;
     FROM RDB$RELATION_CONSTRAINTS AS rc &lt;br /&gt;
LEFT JOIN rdb$ref_constraints AS rfc ON rc.RDB$CONSTRAINT_NAME = rfc.RDB$CONSTRAINT_NAME&lt;br /&gt;
LEFT JOIN rdb$index_segments AS flds_fk ON flds_fk.rdb$index_name = rc.rdb$index_name &lt;br /&gt;
LEFT JOIN rdb$relation_constraints AS rc2 ON rc2.rdb$constraint_name = rfc.rdb$const_name_uq&lt;br /&gt;
LEFT JOIN rdb$index_segments AS flds_pk ON flds_pk.rdb$index_name = rc2.rdb$index_name&lt;br /&gt;
      AND flds_fk.rdb$field_position = flds_pk.rdb$field_position&lt;br /&gt;
    WHERE rc.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY' &lt;br /&gt;
    AND rc.RDB$RELATION_NAME not like 'Z$%'&lt;br /&gt;
    -- optionally select specific tables...&lt;br /&gt;
    --AND rc.RDB$RELATION_NAME = 'tablename' &lt;br /&gt;
    --AND rc.RDB$CONSTRAINT_NAME = 'fk_name' &lt;br /&gt;
 ORDER BY rc.RDB$CONSTRAINT_NAME, flds_fk.rdb$field_position&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chanson</name></author>
	</entry>
</feed>