CREATE TABLE
Результаты:
- CREATE. Сообщение выдается при успешном создании новой таблицы.
- ERROR: Relation 'таблица' already exists. Ошибка – таблица с заданным именем уже существует.
- ERROR: CREATE TABLE: attribute "поле" duplicated. Ошибка – поле включено в список дважды.
- ERROR: Unable to locate type name 'тип' in catalog. Ошибка – заданный тип поля не существует.
- ERROR: Illegal class name 'таблица'. Ошибка – имя таблицы начинается с префикса pg_.
Описание
Команда CREATE TABLE создает новую таблицу в текущей базе данных. Только что созданная таблица не содержит данных, а ее владельцем является пользователь, выполнивший команду CREATE TABLE.
В определении новой таблицы перечисляются все имена и типы полей (кроме полей, унаследованных от базовой таблицы). Имя таблицы может иметь длину до 31 символа и автоматически преобразуется к нижнему регистру, если оно не заключено в кавычки. Поле может относиться к стандартному типу данных (например, int4, char) или содержать массив (описывается стандартным типом данных с квадратными скобками – например, float4[]).
Для полей создаваемой таблицы могут устанавливаться разнообразные ограничения. Например, при установке ограничения NOT NULL поле не может содержать псевдозначений NULL.
Внимание
Имена таблиц не могут совпадать с именами существующих типов данных и таблиц системного каталога. Более того, они даже не могут начинаться с префикса pg_, зарезервированного для системных таблиц.
Максимальное количество полей в таблице равно примерно 1600. С учетом проблем, связанных с размером записей, на практике это число оказывается несколько меньшим.
Дополнительная информация о создании таблиц приведена в главе 4. За информацией об ограничениях полей и таблиц обращайтесь к главе 7.
Пример
Следующая команда создает таблицу с именем shipments и устанавливает для поля id ограничения NOT NULL и DEFAULT.
booktown=# CREATE TABLE shipments ( booktown(# id integer NOT NULL DEFAULT nextval ('shipments_ship_id_seq'). booktown(# customer_id integer, booktown(# isbn text, booktown(# ship_date timestanp); CREATE