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

CREATE TABLE

Параметры:

  • TEMPORARY TEMP. Признак временной таблицы. Таблица, созданная с ключевым словом TEMPORARY или TEMP, автоматически уничтожается в конце текущего сеанса. Все конструкции уровня таблицы (например, индексы и ограничения) уничтожаются в конце сеанса вместе с таблицей. Если имя временной таблицы совпадает с именем существующей таблицы, все ссылки на таблицу с этим именем на протяжении сеанса будут относиться к временной таблице. Иногда это вызывает проблемы, поскольку временная таблица косвенно замещает существующую таблицу в контексте текущего сеанса до момента ее уничтожения.
  • таблица. Имя создаваемой таблицы.
  • поле. Имя поля в новой таблице. Перечисляемые имена полей указываются в круглых скобках и разделяются запятыми.
  • тип. Сразу же после имени пользователя указывается его тип – стандартный тип или массив одного из стандартных типов.
  • ограничение_поля. Полное определение ограничения для данного поля. Ниже перечислены параметры ограничений полей.
    • имя_ограничения_поля. Необязательное имя, присвоенное ограничению.
    • NULL. Ключевое слово NULL разрешает, чтобы в поле хранилось псевдозначение NULL. Действует по умолчанию.
    • NOT NULL. Поле не может содержать псевдозначение NULL. Ограничение NOT NULL эквивалентно ограничению CHECK (поле NOT NULL).
    • UNIQUE. Ограничение гарантирует, что поле содержит только уникальные значения (без дубликатов). Автоматически устанавливается при создании уникального индекса для поля.
    • PRIMARY KEY. Поле назначается первичным ключом таблицы и используется другими таблицами для однозначной идентификации записей. Ограничение первичного ключа эквивалентно установке ограничений UNIQUE и NOT NULL.
    • DEFAULT. Значение по умолчанию, используемое в том случае, если значение поля не было указано в команде INSERT. Если значение по умолчанию не задано, поле заполняется псевдозначением NULL.
    • CHECK. Значения поля проверяются на соответствие заданному условию. Если при выполнении команды INSERT или UPDATE условие не выполняется, операция вставки/модификации завершается неудачей.
    • условие. Произвольное выражение, результатом которого является логическая величина. Указывается после секции CHECK.
    • REFERENCES. Входные значения ограничиваемого поля сравниваются со значениями другого поля в заданной таблице (за дополнительной информацией о создании и использовании этого ограничения обращайтесь к главе 7).
    • внешняя_таблица. Имя таблицы, используемой для проверки в ограничении внешнего ключа.
    • внешнее_поле. Имя поля внешней таблицы, используемого для проверки в ограничении внешнего ключа. Поле должно принадлежать существующей таблице. Если имя поля не задано, используется первичный ключ заданной таблицы.
    • MATCH FULL | MATCH PARTIAL. Секция MATCH указывает, разрешается ли смешивание псевдозначений NULL и "обычных" значений (отличных от NULL) при вставке в таблицу, у которой внешний ключ ссылается на несколько полей. Таким образом, на практике секция MATCH приносит пользу лишь в ограничениях таблиц, хотя формально она может использоваться и при ограничении полей. Конструкция MATCH FULL запрещает вставку данных, у которых часть полей внешнего ключа содержит NULL (кроме случая, когда NULL равны все поля). В PostgreSQL 7.1.x конструкция MATCH PARTIAL не поддерживается. Если секция MATCH отсутствует, считается, что поля NULL удовлетворяют ограничению.
    • ON DELETE. При выполнении команды DELETE для заданной таблицы с ограничиваемым полем выполняется одна из следующих операций: NO ACTION – если удаление приводит к нарушению целостности ссылок, происходит ошибка (используется по умолчанию, когда операция не указана); RESTRICT – аналогично NO ACTION; CASCADE – удаление всех записей, содержащих ссылки на удаляемую запись, поэтому при каскадном удалении необходимо действовать очень осторожно; SET NULL – поля, содержащие ссылки на удаляемую запись, заменяются псевдозначениями NULL; SET DEFAULT – полям, содержащим ссылки на удаляемую запись, присваивается значение по умолчанию.
    • ON UPDATE. При выполнении команды UPDATE для заданной таблицы выполняется одна из операций, описанных выше. По умолчанию также используется значение NO ACTION. При выборе операции CASCADE все записи, содержащие ссылки па обновляемую запись, обновляются новым значением (вместо удаления, как в случае с ON DELETE CASCADE).
    • DEFERRABLE | NOT DEFERRABLE. Значение DEFERRABLE позволяет отложить выполнение ограничения до конца транзакции (вместо немедленного выполнения после выполнения команды). Значение NOT DEFERRABLE означает, что ограничение всегда проверяется сразу же после выполнения очередной команды. В этом случае пользователь не может отложить проверку ограничения до конца транзакции. По умолчанию выбирается именно этот вариант.
    • INITIALLY DEFERRED | INITIALLY IMMEDIATE. Значение INITIALLY DEFERRED откладывает проверку ограничения до конца транзакции, а при установке значения INITIALLY IMMEDIATE проверка производится после каждой команды. По умолчанию используется значение INITIALLY IMMEDIATE.
  • ограничение_таблицы. Полное определение ограничения для создаваемой таблицы. Ограничения таблиц могут распространяться на несколько полей, тогда как ограничение поля всегда создает ограничение только для одного поля. Ниже перечислены параметры ограничений таблиц.
    • имя_ограничения_таблицы. Необязательное имя, присвоенное ограничению.
    • поле [….]. Имя поля (или разделенный запятыми список полей), для которых устанавливается ограничение таблицы.
    • PRIMARY KEY | UNIQUE. Ключевые слова, при наличии которых для заданных полей автоматически строится индекс. UNIQUE означает, что комбинация значений полей, перечисленных за ключевым словом UNIQUE, принимает только уникальные значения. Попытки вставки новых записей, у которых значение поля (или комбинация значений полей) не является уникальной величиной, завершаются неудачей. Ключевое слово PRIMARY KEY обеспечивает проверку уникальности и запрещает присутствие псевдозначений NULL среди значений заданного поля (или полей).
    • CHECK (условие). Команда INSERT или UPDATE завершается успешно лишь при выполнении заданного условия (выражения, возвращающего логический результат). Если условие не выполняется (то есть выражение оказывается ложным), записи не добавляются и не модифицируются.
    • FOREIGN KEY. Ограничение внешнего ключа. Входные значения ограничиваемого поля сравниваются со значениями другого поля в заданной таблице (за дополнительной информацией о создании и использовании этого ограничения обращайтесь к главе 7). Синтаксис части, следующей за секцией FOREIGN KEY, идентичен синтаксису секции REFERENCES для ограничений полей.
  • базовая_таблица. Имя таблицы, от которой новая таблица наследует поля. Если имена унаследованных полей совпадают с именами полей, ранее включенных в структуру таблицы, PostgreSQL выдает сообщение об ошибке и прерывает выполнение команды.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.