CREATE TABLE¶
Оператор создает таблицу
CREATE
[TEMP | TEMPORARY] TABLE [IF NOT EXISTS]
[<название БД>.]<название таблицы>
(
<название поля> [<тип поля>] [<опции>],
...,
[<дополнительные опции>])
IF NOT EXISTS¶
Tсли таблица уже существует, то создавать таблицу заново не нужно
Описание полей¶
Опции - задают различные опции для поля
CHECK() - значение, вставляемое в поле, должно удовлетворять условию
- COLLATE <функция> - задает функцию сравнения для класса TEXT. В качестве функции можно задать следующие функции:
BINARY - значение по умолчанию
NOCASE - без учета регистра
RTRIM
- DEFAULT <значение> - значение по умолчанию для поля. в качестве значения можно укзать и константы:
CURRENT_TIME - текущее время UTC в формате чч:мм:сс
CURRENT_DATE - текущая дата UTC в формате гггг-мм-дд
CURRENT_TIMESTAMP - текущая дата и время UTC в формате гггг-мм-дд чч:мм:сс
NOT NULL [<обработка ошибок>] - поле обязательно должно иметь значение при вставке
PRIMARY KEY [ASC | DESC] [<обработка ошибок>] [AUTOINCREMENT] - поле является первичным ключом таблицы.
UNIQUE [<обработка ошибок>] - поле может содержать только уникальные значения
Дополнительные опции - задают дополнительные опции для таблицы
CHECK(<условие>) - значение должно удовлетворять указанному значению
PRIMARY KEY (<список полей через запятую>) [<обработка ошибок>] - позволяет задать первичный клч для нескольких полей
UNIQUE (<список полей через запятую>) [<обработка ошибок>] - указывает, что заданные поля могут содержать только уникальные значения
Необязательный параметр <обработка ошибок> задает способ разрешения конфликтных ситуации. Формат конструкции ON CONFLICT <алгоритм>.
Алгоритмы:
ABORT - при ошибке, аннулируются все изменения и выводится сообщение об ошибке
FAIL - при ошибке, изменения сохраняются, выполнение команды прерывается и выводится сообщение об ошибке
IGNORE - ошибка игнорируется
- REPLACE
при нарушении условия UNIQUE существующая запись удаляется, а новая вставляется. сообщение об ошибке не выводится
при нарушении условия NOT NULL, значение NULL заменяется значением по умолчанию, а если он не задан то выполняется алгоритм ABORT
если нарушено условие CHECK, применяется алгоритм IGNORE
ROLLBACK - при ошибке, транзакция завершается с откатом всех изменений, дальнейшее выполнение прерывается и выводится сообщение об ошибке. Если активной транзакций нет, то используется алгоритм ABORT
CREATE TABLE table (
snum int
, sname char(10)
, sname char(10) DEFAULT='123'
, snum1 integer UNIQUE
, snum2 integer NOT NULL
, snum3 integer PRIMARY KEY
, snum4 integer REFERENCES table1
, comm decimal CHECK(comm<1)
, comm1 decimal CHECK(comm in (1,2,3,4))
, id integer not null default nextval('my_table_id_seq')
-- вариант определения уникальных полей, уникальность смотрится по комбинации по полям
UNIQUE(snum2, snum3),
-- аналогично unique
PRIMARY KEY(snum2, snum3)
-- аналогично unique
FOREIGN KEY (snum) REFERENCES Salespeople
)