gpt4 book ai didi

foreign-keys - 识别 Sybase 表、字段、键、约束

转载 作者:行者123 更新时间:2023-12-04 06:35:25 24 4
gpt4 key购买 nike

我正在尝试设置一个 Sybase 查询,它会给我以下输出:

Table     KeyType      KeyNumber      Column
table1 PK 1 table1_id
table1 FK 2 table2_id
table1 FK 3 table3_id
table1 FK 4 table4_id
table1 Unique 5 table1_abc
table1 Unique 5 table1_def

换句话说,我需要每个表的 PK,它拥有的每个外键,以及每个唯一键(不是一个键有多个元素的地方,例如上面的唯一键,这是通过具有相同的 key 号)。

我猜我需要使用 sysobject、syscolumns、syskeys 和 sysconstraints,但我似乎无法弄清楚它们是如何相互链接的。

谢谢
卡尔

最佳答案

这是一个开始:

SELECT 
t.name,
CASE k.type
WHEN 1 THEN 'PK'
WHEN 2 THEN 'FK'
WHEN 3 THEN 'Common'
END,
c.name
FROM
sysobjects t INNER JOIN
syscolumns c ON c.id = t.id INNER JOIN
syskeys k ON k.id = t.id AND c.colid IN (k.key1, k.key2, k.key3, k.key4, k.key5, k.key6, k.key7, k.key8)
WHERE
t.type = 'U' AND k.type in (1,2)

它不包括键 ID,为此我猜您可以以某种方式散列非空表 ID 和 keyN 列以生成键的唯一 ID。

它也不包括唯一索引。为此,您会想要 UNION有一些类似的东西:
SELECT 
t.name,
'Unique',
c.name
FROM
sysobjects t INNER JOIN
syscolumns c ON c.id = t.id INNER JOIN
sysindexes i ON i.id = t.id
WHERE t.type = 'U'

查看 Sybase manual page for sysindexes关于如何过滤。

关于foreign-keys - 识别 Sybase 表、字段、键、约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com