Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение информации о Primary Key


Александр_н ©   (2005-11-02 16:21:00) 

Подскажите, как можно из таблицы извлечь программным путём информацию о том, какое поле является ключевым (PRIMARY KEY). Спасибо.


ANB   (2005-11-03 17:44:00) [1]

ЗЫ. Сами одак-компоненты тебе вряд ли помогут.


ANB   (2005-11-03 17:43:00) [2]


> Александр_н   (03.11.05 16:20) [15]

Ну, полный пример писать лениво. Кстати, если нужно перекачивать много данных - лучше на DOA перейти. Для доставания инфы о таблицах нужно использовать системные вьюхи. Правда на FK они тормозят, мне пришлось ускорять это дело через запрос напрямую к системным таблицам. Если очень нужно - могу выслать модуль, который просто качает структуру схемы в мои служебные таблицы. Переделаешь его в скриптогенератор. И для общего развития выполни запросы :
select * from ALL_VIEWS where View_Name like 'ALL_%'
и
select * from ALL_VIEWS where View_Name like 'USER_%'

Получишь список полезных вьюх.


Александр_н   (2005-11-03 16:32:00) [3]

Примечание: Работаю с помощью ODAC-компонентов


Александр_н   (2005-11-03 16:20:00) [4]

ANB Задача именно такова. И так как опыта работы с системными таблицами у меня нет, то был бы рад получить пример, как это сделать, желательно работающий 8-).


Val   (2005-11-03 12:00:00) [5]

>[14] ANB ©   (02.11.05 17:54)
У автора стоит задача ...
это я должен был протелепатить?
способ получения ддл зависит от количества переносимых объектов - если их небольшое кол-во, то лучше получать, анализировать, изменять ддл "руками".
- из какой ?
зависит от объекта, но для таблиц, конечно, только доставать инфу и генерить ддл самому, думаю.


ANB   (2005-11-02 17:54:00) [6]


> Val ©   (02.11.05 17:37) [12]

У автора стоит задача перенести данные из оракла в другую субд на автомате. И как он в этот автомат вызов функций навигатора запихает ?


> то достаем текст из системной таблички.
- из какой ?


Val   (2005-11-02 17:37:00) [7]

>ANB ©   (02.11.05 17:25)
зачем? в любом инструментарии для разработки(типа SQL Navigator etc.) д.б. что-то типа "извлечь ддл". если надо автоматизировать, то достаем текст из системной таблички.


ANB   (2005-11-02 17:25:00) [8]


> Александр_н   (02.11.05 17:14) [9]

Ключевых полей может быть несколько. Поэкспериментируй с запросом.


> Val ©   (02.11.05 17:19) [10]

А запости плиз код, который генерит DDL таблицы.


Val   (2005-11-02 17:19:00) [9]

получите ддл нужных объектов и пройдитесь replace по нему.


Александр_н   (2005-11-02 17:14:00) [10]

Спасибо 8-), но достаточно только имена и тип полей и какое поле ключевое.


ANB   (2005-11-02 16:59:00) [11]

А еще кузяво перенести вьюхи, сиквенсы, пакеты и прочее. А то может и не заработать.


Sergey13   (2005-11-02 16:44:00) [12]

2Александр_н   (02.11.05 16:21)
А тригеры и прочий ПЛ/СКЛ тоже переносить будешь? 8-)


ANB   (2005-11-02 16:40:00) [13]

Ну еще условие на имя конкретной таблицы наложить надо.


ANB   (2005-11-02 16:39:00) [14]

Тады не есть великая проблема.
select   Uc.Table_Name
       ,Ucc.Column_Name
       ,Ucc.position
   from User_Constraints Uc, User_Cons_Columns Ucc
  where Constraint_Type = 'P'
    and Ucc.Constraint_Name = Uc.Constraint_Name
order by Uc.Table_Name, Ucc.Column_Name, Ucc.position


Sergey13   (2005-11-02 16:39:00) [15]

2[3] Александр_н   (02.11.05 16:31)
См. вьюхи начинающиеся на all_или user_и дальше по аглицки название того что надо. В данном случае all_constraints и тому подобное.


Александр_н   (2005-11-02 16:31:00) [16]

ANB:  Oracle


Sergey13   (2005-11-02 16:31:00) [17]

http://www.citforum.ru/database/interbase/index.shtml


ANB   (2005-11-02 16:30:00) [18]

Тип БД надо бы указать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо