Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#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. А проще никак нельзя ? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2005, 12:54 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#18+
Похоже что никак. Просто так наследование не сделаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 11:27 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#18+
[off] Код: plaintext 1. 2. 3. Ну и насчет этих строк меня терзают сомнения: Может быть Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 11:29 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#18+
Кувалдин Роман[off] хотя вопрос конечно интересный (сдается, что он может быть и в принципе нерешаем иначе чем (возможно скрытое от пользователя какой нить ф-ей) приведенное решение. Но сама постановка вопроса о возможности доопределить предка (а не потомка) по части набора столбцов и необходимости инструкций в языке для этого - вполне закономерна. ззы. кстати кроме указанного надо-бы перезапустить создание всех функций (хранимки), обращавшиеся к переопределяемым таблицам, и пересоздать все триггера и т.п., буде такие имеются. (т.е. подмена внутри навороченной структуры будет весьма накладна, имеет смысл продумать хранимку по пересозданию таблиц с подменой оидов во всех связанных объектах). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 12:03 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#18+
4321 ззы. кстати кроме указанного надо-бы перезапустить создание всех функций (хранимки) как вариант - подъем из полного дампа, с предварительной правкой файла дампа в части определения таблиц (добавление предка и правка определений таблиц). Но это - если пользователей можно на время отключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 12:06 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#18+
Собственно проапгрейдить родителями - у меня тоже сабж... (к сожалению лучше приведенных вариантов я тоже пока ничего не сообразил). У меня отключать юзверей нельзя даже на пару секунд.. иначе катастрофа :) strizhЕсть таблицы-справочники tab1, tab2, tab3, на которые ссылаются куча объектов в базе - триггеры, функции, записи других таблиц. Нужно создать таблицу-родителя tabspr Офф: имейте ввиду, что триггеры не наследуются, поскольку реализация INHERITS фактически напоминает нечто вроде прикрытого UNION ALL. Т.е. добавив предка триггеры всё-равно придётся описывать для всех детей. (а жаль) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 13:19 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#18+
Как вариант... Можно реализовать "неявное" наследование через триггер. Дочерние таблицы трогать не нужно, механизм наследования не используется. Достаточно создать(доопределить) новую родительскую таблицу и триггер на вставку. В этом триггере выполять реальную вставку в одну из "дочерних таблиц". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2007, 12:26 |
|
||
|
Как существующую таблицу сделать наследуемой от другой таблицы ?
|
|||
|---|---|---|---|
|
#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, перенесите данные, измените зависимости. Все делать в транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 15:25 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33140014&tid=2004733]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
88ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 452ms |

| 0 / 0 |
