[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