c# - 查找 Firebird 数据库中作为主键的所有列名

标签 c# .net primary-key firebird firebird-embedded

我需要找到表中所有作为主键的列并返回它们的列名。

有没有一种方法可以通过 Firebird .net API 的 Connection.GetSchema() 方法来实现?如果不是,SQL 语句将如何实现这一目标?

我不需要完整的代码示例,但需要有关如何操作的一些指导。

在我的场景中,我有一个 Firebird 嵌入式数据库,我想从数据库模式生成存储的过程。我需要主键列名来在表上生成触发器,将一些元数据插入到跟踪表中。

我使用最新版本的 Firebird 和最新的 .net 连接器 (v.2.5.5)

如果您需要有关我的问题的更多信息,请发表评论!

最佳答案

要选择所有表的主键字段,您可以使用 Firebird 系统表,例如:

select
    ix.rdb$index_name as index_name,
    sg.rdb$field_name as field_name,
    rc.rdb$relation_name as table_name
from
    rdb$indices ix
    left join rdb$index_segments sg on ix.rdb$index_name = sg.rdb$index_name
    left join rdb$relation_constraints rc on rc.rdb$index_name = ix.rdb$index_name
where
    rc.rdb$constraint_type = 'PRIMARY KEY'

关于c# - 查找 Firebird 数据库中作为主键的所有列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617891/

相关文章:

c# - 使用表达式在 EF4 中渴望加载多对多?

c# - 从 url 读取数据返回空值

c# - 在方法签名中使用异步关键字返回 Web Api 端点中的任务

mysql - 我是否需要使用约束来制作 sql 表才能与 hibernate 一起使用

ruby-on-rails - 何时在连接表上设置没有主键的表

c# - 读取非英文文件

c# - 在页面加载时禁用下拉列表

.net - 跨换行符匹配正则表达式?

c# - 旋转图像并查看下一页

mysql - MySQL中自动递增ID字段的最小长度