Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.06.2005, 12:54
|
|||
|---|---|---|---|
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
Есть таблицы-справочники tab1, tab2, tab3, на которые ссылаются куча объектов в базе - триггеры, функции, записи других таблиц. Нужно создать таблицу-родителя tabspr. Понятно, что если б tab1, tab2, tab3 не было, все было бы просто: create table tabspr ...; create table tab1 ... inherits (tabspr); create table tab2 ... inherits (tabspr); create table tab3 ... inherits (tabspr); А так что делать ? Приходит в голову только длинный путь: alter table tab1 rename to tab1cop; alter table tab2 rename to tab2cop; alter table tab3 rename to tab3cop; create table tab1 ... inherits (tabspr); create table tab2 ... inherits (tabspr); create table tab3 ... inherits (tabspr); insert into tab1 select * from tab1cop; insert into tab2 select * from tab2cop; insert into tab3 select * from tab3cop; drop table tab1 cascade; drop table tab2 cascade; drop table tab3 cascade; после чего пересоздавать все функции, триггеры и foreign keys, раздавать по-новой права, делать vacuum. А проще никак нельзя ? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.06.2005, 11:27
|
|||
|---|---|---|---|
|
|||
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
Похоже что никак. Просто так наследование не сделаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.06.2005, 11:29
|
|||
|---|---|---|---|
|
|||
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
[off] Код: plaintext 1. 2. 3. Ну и насчет этих строк меня терзают сомнения: Может быть Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.06.2005, 12:03
|
|||
|---|---|---|---|
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
Кувалдин Роман[off] хотя вопрос конечно интересный (сдается, что он может быть и в принципе нерешаем иначе чем (возможно скрытое от пользователя какой нить ф-ей) приведенное решение. Но сама постановка вопроса о возможности доопределить предка (а не потомка) по части набора столбцов и необходимости инструкций в языке для этого - вполне закономерна. ззы. кстати кроме указанного надо-бы перезапустить создание всех функций (хранимки), обращавшиеся к переопределяемым таблицам, и пересоздать все триггера и т.п., буде такие имеются. (т.е. подмена внутри навороченной структуры будет весьма накладна, имеет смысл продумать хранимку по пересозданию таблиц с подменой оидов во всех связанных объектах). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.06.2005, 12:06
|
|||
|---|---|---|---|
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
4321 ззы. кстати кроме указанного надо-бы перезапустить создание всех функций (хранимки) как вариант - подъем из полного дампа, с предварительной правкой файла дампа в части определения таблиц (добавление предка и правка определений таблиц). Но это - если пользователей можно на время отключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.04.2006, 13:19
|
|||
|---|---|---|---|
|
|||
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
Собственно проапгрейдить родителями - у меня тоже сабж... (к сожалению лучше приведенных вариантов я тоже пока ничего не сообразил). У меня отключать юзверей нельзя даже на пару секунд.. иначе катастрофа :) strizhЕсть таблицы-справочники tab1, tab2, tab3, на которые ссылаются куча объектов в базе - триггеры, функции, записи других таблиц. Нужно создать таблицу-родителя tabspr Офф: имейте ввиду, что триггеры не наследуются, поскольку реализация INHERITS фактически напоминает нечто вроде прикрытого UNION ALL. Т.е. добавив предка триггеры всё-равно придётся описывать для всех детей. (а жаль) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2007, 12:26
|
|||
|---|---|---|---|
|
|||
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
Как вариант... Можно реализовать "неявное" наследование через триггер. Дочерние таблицы трогать не нужно, механизм наследования не используется. Достаточно создать(доопределить) новую родительскую таблицу и триггер на вставку. В этом триггере выполять реальную вставку в одну из "дочерних таблиц". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.01.2008, 15:25
|
|||
|---|---|---|---|
|
|||
Как существующую таблицу сделать наследуемой от другой таблицы ? |
|||
|
#18+
Читали ? http://www.postgresql.org/docs/8.2/interactive/sql-altertable.html Если отвечать на поставленный вопрос, то : Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Просто создайте таблицу tabspr, triggers, перенесите данные, измените зависимости. Все делать в транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=2004733]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 310ms |

| 0 / 0 |
