![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение информации о 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]Тип БД надо бы указать.