查找 Firebird 数据库中作为主键的所有列名
Find all column names that are primary keys in Firebird database
我需要在 table 中找到所有作为主键的列和 return 它们的列名。
有没有一种方法可以使用 Firebird .net API 的 Connection.GetSchema()
方法来实现?如果不是,SQL 语句将如何实现这一目标?
我不需要完整的代码示例,但需要一些有关如何操作的指导。
在我的场景中,我有一个 Firebird 嵌入式数据库,我想从数据库模式生成存储的过程。我需要主键列名在 table 上生成触发器,将一些元数据插入跟踪 table.
我使用最新版本的 Firebird 和最新的 .net 连接器 (v.2.5.5)
如果您需要有关我的问题的更多信息,请发表评论!
要select 所有表的主键字段,您可以使用 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'
我需要在 table 中找到所有作为主键的列和 return 它们的列名。
有没有一种方法可以使用 Firebird .net API 的 Connection.GetSchema()
方法来实现?如果不是,SQL 语句将如何实现这一目标?
我不需要完整的代码示例,但需要一些有关如何操作的指导。
在我的场景中,我有一个 Firebird 嵌入式数据库,我想从数据库模式生成存储的过程。我需要主键列名在 table 上生成触发器,将一些元数据插入跟踪 table.
我使用最新版本的 Firebird 和最新的 .net 连接器 (v.2.5.5)
如果您需要有关我的问题的更多信息,请发表评论!
要select 所有表的主键字段,您可以使用 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'