【问题标题】:Discover primary / unique keys in Sybase ASE在 Sybase ASE 中发现主键/唯一键
【发布时间】:2023-04-04 10:41:01
【问题描述】:

在 Sybase ASE 中,我想发现所有主键和唯一键。我想做一些类似于这个答案中解释的事情:

Identifying Sybase tables, fields, keys, constraints

但不幸的是,这对我不起作用。不知何故,syskeys 表确实为我自己的键返回任何行,仅用于系统表键。

我可能做错了什么?一些缺少的赠款?我已经安装了 Sybase ASE 15.5,我正在连接用户 dbo,登录 sa

【问题讨论】:

    标签: sql sap-ase sysobjects


    【解决方案1】:

    当您显式声明一个关键字段时——比如在CREATE TABLE 语句中——这个不会填充syskeys 表。你会使用(例如)sp_primarykeys 来做到这一点。这允许您在syskeys 表中“注册”您希望应用程序发现的主键、外键等。您可以通过这种方式声明主键,即使没有对相关字段施加实际约束。

    存储过程sp_helpconstraint 可用于查找为表定义的所有键(等)。

    要查询数据库中的所有表,您需要使用 sysindexes table 并查看,例如status 字段。

    【讨论】:

    • @Lukas - 仅在这个周末,我无法访问 Sybase 服务器来为您测试关于 sysindexes 的查询 - 抱歉!
    • @Lukas - this 可能会。
    • 嗯,我想避免使用由sp_helpconstraint 返回的涉及解析SQL 的变通办法和技巧。使用sp_primarykeysyskeys 显式添加密钥是一种常见做法吗?我问这个是因为我想在my database abstraction library jOOQ 中添加对 Sybase ASE 的支持,而且我不确定我可以从客户端代码中得到什么......
    • @Lukas - 你不能依赖 syskeys 表。但是,如果您查询 sysindexes 表,它将告诉您实际存在什么。
    • 太棒了,一个链接做到了!非常感谢您的帮助!
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多