如何识别具有指向 Sybase 中特定表的外键的表?

Ren*_*ger 7 sybase referential-integrity

我正在寻找(最好)一个 SQL 语句,该语句为任何带有外键的表选择表/和列名到 Sybase 中的给定表。我认为sys...表格应该以某种方式可能,但对 sybase 来说是全新的,我无法理解它。因此,任何朝着正确方向发展的帮助都受到高度赞赏。

编辑:为了完整起见:SELECT @@VERSION返回

'Adaptive Server Enterprise/15.0.3/EBF 17156 ESD#3/P/Sun_svr4/OS 5.8/ase1503/2726/64-bit/FBO/Fri Feb 5 05:26:23 2010'

编辑 2 非常
感谢您的建议,尤其是Andrew Bickerton 的评论。这使我能够构建一个基本的 SQL 选择语句,作为更进一步的起点。

如果其他人对它感兴趣,这里是:

select 
  fko.name    "Foreign key name",
  par.name    "Referenced table name",
  fk1.name || ' -> ' || pk1.name "Reference 1",
  fk2.name || ' -> ' || pk2.name "Reference 2",
  fk3.name || ' -> ' || pk3.name "Reference 3",
  fk4.name || ' -> ' || pk4.name "Reference 4"
from 
  sysobjects      tab                                       join
  sysconstraints  con on tab.id        = con.tableid        join
  sysobjects      fko on con.constrid  = fko.id             join
  sysreferences   ref on con.constrid  = ref.constrid       join
  sysobjects      par on par.id        = ref.reftabid  left join
  ---- 1. Column
  syscolumns      fk1 on ref.fokey1    = fk1.colid and
                         ref.tableid   = fk1.id        left join
  syscolumns      pk1 on ref.refkey1   = pk1.colid and
                         ref.reftabid  = pk1.id        left join
  ---- 2. Column
  syscolumns      fk2 on ref.fokey2    = fk2.colid and
                         ref.tableid   = fk2.id        left join
  syscolumns      pk2 on ref.refkey2   = pk2.colid and
                         ref.reftabid  = pk2.id        left join
  ---- 3. Column
  syscolumns      fk3 on ref.fokey3    = fk3.colid and
                         ref.tableid   = fk3.id        left join
  syscolumns      pk3 on ref.refkey3   = pk3.colid and
                         ref.reftabid  = pk3.id        left join
  ---- 4. Column
  syscolumns      fk4 on ref.fokey4    = fk4.colid and
                         ref.tableid   = fk4.id        left join
  syscolumns      pk4 on ref.refkey4   = pk4.colid and
                         ref.reftabid  = pk4.id        -- Et cetera...
where
  tab.type = 'U'      and
  tab.name = 'tq84_f' and
  fko.type = 'RI'
Run Code Online (Sandbox Code Playgroud)

And*_*ton 4

自从我在 sybase 工作以来已经有一段时间了,但是(根据记忆)以下 sql 应该为您指明正确的方向:

select *
from sysobjects so inner join syscolumns sc on so.id = sc.id 
where sc.name = 'field name'
Run Code Online (Sandbox Code Playgroud)

您还可以查看sybase 在线书籍(系统表)