[firebase-br] Como capturar o nome da tabela referente a ForeIgnKey ?

Alexandre Sousa dave.malkavian em gmail.com
Seg Maio 12 13:12:57 -03 2008


Ola,

Há um tempo atrás postei uma stored procedure pra isso mas mando de novo :)

CREATE PROCEDURE RELACIONA_TABELAS
RETURNS (
    TABELA1 VARCHAR(31),
    TABELA2 VARCHAR(31),
    CAMPOTABELA1 VARCHAR(70),
    CAMPOTABELA2 VARCHAR(70))
AS
DECLARE VARIABLE TEMPFIELD VARCHAR(31);
DECLARE VARIABLE FK VARCHAR(31);
DECLARE VARIABLE PK VARCHAR(31);
begin
  for select
    rrc.RDB$INDEX_NAME as FK,
    rrc.RDB$RELATION_NAME as Tabela1,
    rrc2.RDB$INDEX_NAME as PK,
    rrc2.RDB$RELATION_NAME as Tabela2

  from RDB$RELATION_CONSTRAINTS rrc
    join RDB$REF_CONSTRAINTS rrfc on (rrfc.RDB$CONSTRAINT_NAME = 
rrc.RDB$CONSTRAINT_NAME)
    join RDB$RELATION_CONSTRAINTS rrc2 on (rrc2.RDB$CONSTRAINT_NAME = 
rrfc.RDB$CONST_NAME_UQ)
  into :FK, :TABELA1, :PK, :TABELA2
  do
  begin
    CAMPOTABELA1 = '';
    CAMPOTABELA2 = '';

    for select ris.RDB$FIELD_NAME
        from RDB$INDEX_SEGMENTS ris
        where ris.RDB$INDEX_NAME = :FK
        order by ris.RDB$FIELD_POSITION
        into :TEMPFIELD
    do
    begin
      CAMPOTABELA1 = :CAMPOTABELA1 || :TEMPFIELD;
      CAMPOTABELA1 = RTRIM(CAMPOTABELA1);
      CAMPOTABELA1 = :CAMPOTABELA1 || ';';
    end

    for select ris.RDB$FIELD_NAME
        from RDB$INDEX_SEGMENTS ris
        where ris.RDB$INDEX_NAME = :PK
        order by ris.RDB$FIELD_POSITION
        into :TEMPFIELD
    do
    begin
      CAMPOTABELA2 = :CAMPOTABELA2 || :TEMPFIELD;
      CAMPOTABELA2 = RTRIM(CAMPOTABELA2);
      CAMPOTABELA2 = :CAMPOTABELA2 || ';';
    end
    suspend;
  end
end;

Espero que ajude.

Alexandre Sousa

----- Original Message ----- 
From: "Ralhos" <ralhos em gmail.com>
To: <lista em firebase.com.br>
Sent: Monday, May 12, 2008 1:07 PM
Subject: [firebase-br] Como capturar o nome da tabela referente a ForeIgnKey 
?


Delphi 6
IBO 4.8.7
FireBird 2.1

Alguém sabe me dizer como capturar, via tabela de sistema ou de outra
forma, o nome da tabela referente a FK ?

Exemplo

Municipios
Id,
Nome,
Estado FK -> Estados

Como eu faço para capturar o nome da tabela Estados dentro da
QyMunicipios ?

Quero fazer uma rotina genérica, para fazer um certo controle, por isso
preciso disso.

Obrigado.


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista