Найти все имена столбцов, которые являются первичными ключами в базе данных Firebird

Мне нужно найти все столбцы в таблице, которые являются первичными ключами и вернуть их имена столбцов.

Есть ли способ, которым я могу достичь этого с Connection.GetSchema() метод Firebird .net API? Если нет, то как бы выглядел оператор SQL для этого?

Мне не нужен полный пример кода, но некоторые рекомендации о том, как это сделать.

В моем сценарии у меня есть встроенная база данных Firebird, и я хочу генерировать хранимые процедуры из схемы базы данных. Мне нужны имена столбцов первичного ключа для генерации триггеров в таблице, которые вставляют некоторые метаданные в таблицу отслеживания.

Я использую последнюю версию Firebird с последним.net разъемом (v.2.5.5)

Если вам нужна дополнительная информация о моей проблеме, пожалуйста, прокомментируйте!

1 ответ

Решение

Для выбора полей первичного ключа всех таблиц вы можете использовать системные таблицы 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'
Другие вопросы по тегам