×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.7.4. Хранение значений

Значения, вставляемые в таблицу, преобразуются в тип данных целевого столбца в соответствии со следующими шагами.

Преобразование типов при хранении значений

  1. Проверьте наличие точного соответствия целевому типу данных.

  2. В противном случае попытайтесь преобразовать выражение в целевой тип данных. Это возможно, если приведение для присваивания между этими двумя типами данных зарегистрировано в pg_cast системном каталоге (см. CREATE CAST). Кроме того, если выражение является литералом неизвестного типа, содержимое строки литерала будет передано в процедуру преобразования ввода для целевого типа данных.

  3. Проверьте, существует ли корректирующее приведение типов (sizing cast) для целевого типа данных. Корректирующее приведение — это приведение типа данных к самому себе. Если таковое обнаружено в pg_cast системном каталоге, примените его к выражению перед сохранением значения в целевой столбец. Функция реализации для такого приведения типов всегда принимает дополнительный параметр типа integer, который получает значение atttypmod целевого столбца (обычно это его объявленная длина, хотя интерпретация atttypmod различается для разных типов данных); также она может принимать третий boolean параметр, определяющий, является ли приведение явным или неявным. Функция приведения типов отвечает за применение любой зависимой от длины семантики, такой как проверка размера или усечение.

Пример 2.7.9. character Преобразование типов данных при хранении

Для целевого столбца, объявленного как character(20) следующий оператор показывает, что сохраняемое значение имеет правильный размер:

CREATE TABLE vv (v character(20));
INSERT INTO vv SELECT 'abc' || 'def';
SELECT v, octet_length(v) FROM vv;

          v           | функция octet_length
----------------------+--------------
 abcdef               |           20
(1 row)

В действительности здесь произошло то, что два литерала с неопределенным типом (unknown) были приведены к типу данных text по умолчанию, что позволило || разрешить оператор как text операцию конкатенации. Затем text результат оператора преобразуется в тип данных bpchar («blank-padded char», внутреннее имя типа данных character тип данных), чтобы он соответствовал типу целевого столбца. (Поскольку преобразование из text в bpchar является бинарно совместимым (binary-coercible), это преобразование не добавляет реального вызова функции). Наконец, функция изменения размера bpchar(bpchar, integer, boolean) находится в системном каталоге и применяется к результату оператора и сохраненной длине столбца. Эта специфичная для типа функция выполняет требуемую проверку длины и добавление пробелов для дополнения.


Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению