Subject | RE: [firebird-support] Dependencies |
---|---|
Author | Alan McDonald |
Post date | 2006-03-30T22:45:35Z |
> Alan McDonald wrote:/src/metadata/metadataitem.cpp?view=markup&rev=817
> > IBExpert (and others) can show a tables dependencies
> > I'm interested only in a table's dependence on other tables.
> > RDB$DEPENDENCIES only lists a tables dependence on triggers and
> views but
> > not other tables. There must be a more circuitous route to obtaining the
> > number of tables a table is dependent on.
> > Anyone know the SQL?
>
> It's not simple. Tables can relate with other tables on foreign keys,
> check constraints and computed columns. You need to take all of those
> into account.
>
> Here's what we use in FlameRobin:
>
> 1. get deps. based on foreign keys
> 2. deps. for computed columns (join rdb$dependecies with rdb$relations)
> 3. deps. based on check constraints
>
> Checks are enforced via system triggers, so:
>
> a) find all check constraints for a table
> b) find all system triggers bound to that CHECK constraint
> c) find dependencies for those system triggers
> d) use those dependencies as deps. of this table
>
> In case you wish to see the queries involved, the code for it is in file
> metadataitem.cpp in function: MetadataItem::getDependencies, here:
>
> http://svn.sourceforge.net/viewcvs.cgi/flamerobin/trunk/flamerobin
Watch the long-line wraps.
thanks - I'll need to study this
Alan