Иллюстрированный самоучитель по PostgreSQL

CREATE TYPE

Определение нового типа данных в базе.

Синтаксис:

CREATE TYPE тип (INPUT = входная_функция, OUTPUT = входная_функция
, INTERNALLENGTH = { внутренний_размер | VARIABLE }
[, EXTERNALLENGTH – { внешний_размер | VARIABLE } ]
[, DEFAULT = "значение_по^умолчанию" ]
[, ELEMENT = элемент ] [. DELIMITER = разделитель ]
[, SEND = функция_отправки ] [, RECEIVE = функция_получения ]
[, PASSEDBYVALUE ]
[, ALIGNMENT = выравнивание ]
[, STORAGE = хранение ])

Параметры:

  • тип. Имя нового типа. Максимальная длина имени равна 30 символам. Имена типов должны быть уникальными в рамках базы данных и не могут начинаться с символа подчеркивания (зарезервирован для типов косвенно определяемых массивов).
  • внутренний_размер. Внутренний размер определяемого типа (в байтах).
  • внешний_размер. Внешний размер определяемого тина (в байтах).
  • входная_функция. Имя входной функции определяемого типа. Функция должна быть заранее определена командой CREATE FUNCTION и должна преобразовывать внешнее представление типа во внутреннее представление.
  • выходная_функция. Имя выходной функции определяемого типа. Функция должна преобразовывать внутреннее представление типа во внешнее представление (форму, предназначенную для вывода).
  • элемент. Тип данных отдельного элемента массива, адресуемого данным типом (при самостоятельной реализации типов для хранения массивов). Параметр элемент должен быть типом данных фиксированного размера.
  • разделитель. Разделитель значений для косвенно определяемых массивов, связанных с типом (тип[]).
  • значение_по_умолчанию. Значение по умолчанию для нового типа данных. Если значение не указано, по умолчанию поля заполняются либо величиной, указанной в ограничении DEFAULT уровня таблицы, либо псевдозначениямп NULL.
  • функция_отправки. Имя функции отправки для определяемого типа. Функция преобразует данные в форму, подходящую для передачи на другой компьютер, однако в PostgrcSQL 7.1.x такая возможность не поддерживается, поэтому параметр не используется.
  • функция_получения. Имя функции получения для определяемого типа. Функция получает данные в форме, сгенерированной функцией отправки, и восстанавливает но ней внутреннее представление типа. В PostgreSQL 7.1.х такая возможность не поддерживается, поэтому параметр не используется.
  • PASSEDBYVALUE. Необязательное ключевое слово PASSEDBYVALUE означает, что операторы п функции, использующие определяемый тип данных, должны передавать соответствующие аргументы по значению, а не по ссылке (как происходит по умолчанию). Параметр не может использоваться с типами, внутреннее представление которых занимает более 4 байт.
  • выравнивание. Способ выравнивания определяемого типа в памяти. Допустимые значения – char, int2, int4 и double. Если параметр не задан, по умолчанию выбирается значение int4.
  • хранение. Принцип храпения значений определяемого типа. Допустимые значения – plain, external, extended и main. Если параметр не задан, по умолчанию выбирается значение plain.

Результаты:

CREATE. Это сообщение выдается при успешном создании типа.

Описание

Команда CREATE TYPE предназначена для регистрации новых пользовательских типов в текущей базе данных. Пользователь PostgreSQL, выполнивший команду, становится владельцем нового типа.

При создании нового типа указываются две пользовательские функции, написанные на С, – входная и выходная функции определяемого типа данных. Входная функция преобразует внешнее представление типа во внутреннее представление, которое используется системными объектами, связанными с этим типом. Выходная функция преобразует внутреннее представление во внешнее.

Обе функции, входная и выходная, вызываются с одним аргументом типа opaque. Выходная функция должна возвращать тип opaque, тогда как входная функция возвращает значение определяемого типа. Обратите внимание: функции должны быть определены до создания типа.

Тип определяется с фиксированным или с переменным размером. Если вы хотите создать тип фиксированного размера, присвоите параметру INTERNALLENGTH нужное числовое значение (в байтах). Если тип определяется с переменным размером, используйте ключевое слово VARIABLE вместо параметра INTERNALLENGTH; в этом случае размер будет определяться по тем же правилам, что и для типа text. Внешний размер (EXTERNALLENGTH) задается по тому же принципу – в виде числового значения или с ключевым словом VARIABLE.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.