AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Ermitteln von foreign keys per SQL Abfrage auf Systemtabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Ermitteln von foreign keys per SQL Abfrage auf Systemtabellen

Ein Thema von ZOD · begonnen am 26. Sep 2012 · letzter Beitrag vom 26. Sep 2012
 
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#4

AW: Ermitteln von foreign keys per SQL Abfrage auf Systemtabellen

  Alt 26. Sep 2012, 09:17
@jobo
Danke, das wirkt (derzeit ohne Nebenwirkungen ). Ich musste nur ein paar kleine Änderungen vornehmen, da IB7.1 bzw. FB2.0 das "case" im select nicht mag und ich per Parameter
die Tabelle auswähle, die mich interessiert.

Das also hat bei mir funktioniert:

Code:
select
rel.rdb$constraint_name as foreignkey,
co1.rdb$relation_name as detailtable,
/*
case idx.rdb$segment_count
  when 1 then fl1.rdb$field_name
  else idx.rdb$segment_count
end as fields,
*/
fl1.rdb$field_name,
idx.rdb$segment_count,
rel.rdb$const_name_uq as primarykey,
co2.rdb$relation_name as mastertable,
fl2.rdb$field_name as masterfield
from rdb$ref_constraints rel
/*  RDB$Relation_Constraints wird 2x benötigt:
    als co1 für den Tabellennamen des ForeignKey
    als co2 für den Tabellennamen des PrimaryKey, auf den sich der ForeignKey bezieht */
/*  ebenso RDB$Index_Segments
    als fl1 für den Spaltennamen des FK
    als fl2 für den Spaltennamen des PK */
left outer join rdb$relation_constraints co1 on rel.rdb$constraint_name = co1.rdb$constraint_name
left outer join rdb$indices idx on rel.rdb$constraint_name = idx.rdb$index_name
left outer join rdb$relation_constraints co2 on rel.rdb$const_name_uq = co2.rdb$constraint_name
left outer join rdb$index_segments fl1 on rel.rdb$constraint_name = fl1.rdb$index_name
left outer join rdb$index_segments fl2 on rel.rdb$const_name_uq = fl2.rdb$index_name
where
(not rel.rdb$constraint_name like 'RDB$')
and
co2.rdb$relation_name = :master_table
order by rel.rdb$constraint_name
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz