Найти все имена столбцов, которые являются первичными ключами в базе данных 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'