PostgreSQL переопределяет унаследованные столбцы - PullRequest
4 голосов
/ 03 февраля 2011

Предположим, у меня есть отношение xmldoc, которое выглядит следующим образом:

   Column     |            Type             | Modifiers                          
--------------+-----------------------------+-----------------
docid         | integer                     | not null  
create_date   | timestamp without time zone | not null 
type          | text                        | not null
xml           | xml                         | 

Теперь, допустим, я создаю другую таблицу, которая просто наследуется от этой таблицы без каких-либо других столбцов. Как я могу, скажем, переопределить «xml» для типа «текст»?

В настоящее время я получаю:

ERROR:  cannot alter inherited column "xml"

Итак, как работает переопределение в наследовании БД? [В частности, я использую PostgreSQL 8.3]

1 Ответ

4 голосов
/ 03 февраля 2011

Из тонкой инструкции :

Если список имен столбцов новой таблицы содержит имя столбца, которое также унаследовано, тип данных должен также соответствовать унаследованному столбцу (столбцам), и определения столбцов объединяются в один.

Таким образом, вы не можете переопределить xml для типа text. А что касается "как работает переопределение в наследовании БД?" Конечно, это не так, вы не можете изменять интерфейс (то есть столбцы) с помощью такого наследования, вы можете только добавлять новые вещи или ужесточать ограничения.

Вы знакомы с принципом подстановки Лискова ? Изменение типа столбца сделает общие свойства таблиц (интерфейсы AKA) несовместимыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...