Инструменты пользователя

Инструменты сайта


alter_table

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
alter_table [2008/05/02 04:30]
peaktop
alter_table [2008/05/02 03:33] (текущий)
Строка 1: Строка 1:
 +====== ALTER TABLE ======
  
 +
 +
 +
 +===== Версии сервера =====
 +^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.0.3 ^ 2.0.4 ^ 2.1 ^ 2.5 ^ 3.0 ^
 +|  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  ?  |  ?  |
 +
 +
 +===== Формат =====
 +<​code>​
 +ALTER TABLE table <​operation>​ [, <​operation>​ ...];
 +
 +<​operation>​ = {ADD <​col_def>​ | ADD <​table_constraint>​ | DROP col
 +| DROP CONSTRAINT constraint}
 +
 +<​col_def>​ = col {<​datatype>​ | [COMPUTED [BY] (<​expr>​) | domain}
 +[DEFAULT {literal | NULL | USER}]
 +  [NOT NULL] [<​col_constraint>​]
 +  [COLLATE collation]
 +
 +<​col_constraint>​ = [CONSTRAINT constraint] <​constraint_def>​
 +  [<​col_constraint>​]
 +
 +<​constraint_def>​ = {PRIMARY KEY | UNIQUE
 +  | CHECK (<​search_condition>​)
 +  | REFERENCES other_table [(other_col [, other_col ...])]}
 +
 +<​datatype>​ = {
 +{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION} [<​array_dim>​]
 +  | {DECIMAL | NUMERIC} [(precision [, scale])] [<​array_dim>​]
 +  | DATE [<​array_dim>​]
 +  | {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR}
 +    [(1...32767)] [<​array_dim>​] [CHARACTER SET charname]
 +  | {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
 +    [VARYING] [(1...32767)] [<​array_dim>​]
 +  | BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE int]
 +    [CHARACTER SET charname]
 +  | BLOB [(seglen [, subtype])]
 +  }
 +
 +<​array_dim>​ = [x:y [, x:y ...]]
 +</​code>​
 +:!: Внешние скобки должны быть включены в объявление массивов.
 +<​code>​
 +<​table_constraint>​ = CONSTRAINT constraint <​tconstraint_opt>​
 +[<​table_constraint>​]
 +
 +<​tconstraint_opt>​ = {
 +{PRIMARY KEY | UNIQUE} (col [, col ...])
 +  | FOREIGN KEY (col [, col ...]) REFERENCES other_table
 +  | CHECK (<​search_condition>​)
 +  }
 +
 +</​code>​
 +Обратите внимание:​ Для полного синтаксиса <​search_condition>,​ смотри [[CREATE TABLE]].
 +
 +^ Аргумент ^ Описание ^
 +|table |Имя существующей таблицы,​ которую надо измененить. |
 +|< operation > |Операция,​ которую необходимо произвести над таблицей. Допустимые опции:​1) ADD: Добавить новый столбец или ограничение к таблице;​ 2)DROP: Удалить существующий столбец или ограничение из таблицы.|
 +|< col_def > |Описание нового столбца,​ который следует добавить. Должно включать имя столбца и тип данных. Может включать значение по умолчанию,​ ограничения столбца и специфический порядок сортировки.|
 +|<​table_constraint>​ |Описание нового ограничения таблицы,​ которое следует добавить. Только одно ограничение таблицы может быть добавлено к таблице. |
 +|col |Имя добавляемого или удаляемого столбца. Имя столбца должно быть уникальным внутри таблицы.|
 +|< constraint > |Имя добавляемого или удаляемого ограничения. Имя ограничения должно быть уникальным внутри таблицы.|
 +|COLLATE collation |Добавляет порядок сортировки к определенной таблице.|
 +|< datatype > |Тип данных добавляемого столбца. |
 +|domain |Имя домена,​ на котором определение столбца должно быть основано.|
 +|COMPUTED [BY] <​expr>​ |Определяет вычисляемый столбец основаный на выражении <​expr>​. Такой столбец не занимает пространства памити в базе данных. <​expr>​ может быть любым арифметическим выражением допустимым для типов данных в выражении. Другие столбцы,​ на котрые ссылается выражение <​expr>,​ должны существовать раньше,​ чем они будут использованы. Выражение не может ссылатся на BLOB столбцы. <​expr>​ должно возвращать одиночное значение и не может возвращать массив.|
 +|NOT NULL |Определяет что столбец не может содержать значение NULL. Если таблица уже имеет строки,​ новые столбцы не могут быть NOT NULL. Атрибут NOT NULL используется только для столбцов.|
 +|DEFAULT |Определяет значение по умолчанию столбца,​ которое устанавливается когда не сделано ни какого ввода. Значения:​ 1)literal: Вставляется специфическая строка,​ числовое значение,​ или дата; 2)NULL: Вводится значение NULL; 3)USER: Вводится имя текущего пользователя. Столбец должен быть совместимого текстового типа, чтобы использовать значение по умолчанию. Установка значению по умолчанию на уровне столбца отменяет значение по умолчанию на уровне домена.|
 +|< constraint_def > |Определение ограничения столбца. |
 +|CONSTRAINT |Добавляет именованное ограничение к таблице. См. [[CONSTRAINT]] |
 +|DROP CONSTRAINT |Удаляет определенное ограничение таблицы. См. [[CONSTRAINT]] |
 +
 +
 +
 +===== Описание =====
 +ALTER TABLE дает возможность изменить структуру существующей таблицы. Одиночная инструкция ALTER TABLE может выполнить множественные добавления и удаления.
 +
 +Именование ограничения столбца факультативно. Если имя не определено,​ Firebird назначает сгенерированное системой имя. Присвоение описательно имени может cделать ограничение проще для поиска,​ изменения или удаления,​ а так же проще для поиска,​ когда это имя появляется в сообщениях об ошибках нарушения ограничения.
 +
 +Таблица может быть изменена ее создателем и пользователем [[SYSDBA]].
 +
 +Инструкция ALTER TABLE терпит неудачу,​ если текущие данные в таблице нарушают [[constraint|PRIMARY KEY]] или [[constraint|UNIQUE]] ограничение,​ добавленное к таблице. Инструкция так же терпит неудачу если столбец,​ который должен быть удален:​
 +
 +* Часть [[constraint|UNIQUE]],​ [[constraint|PRYMARY]] или [[constraint|FOREGN KEY]] ограничения или используется в [[CHECK]] ограничении.
 +* Используется в выражении вычисляемого столбца. ​
 +
 +Удалите ограничения или вычисляемые столбцы прежде удаления столбца таблицы. Ограничения [[constraint|PRIMARY KEY]] и [[constraint|UNIQUE]] не можгут быть удалены,​ если используются для [[FOREIGN KEY]] ограничений. В этом случае,​ удалите ограничение [[constraint|FOREIGN KEY]] раньше удаления [[constraint|PRIMARY KEY]] или [[constraint|UNIQUE]] ключа, на которые оно ссылается.
 +
 +Когда происходит изменение столбца основанного на домене,​ дополнительные [[CHECK]] ограничения могут быть заданны для столбца. Изменение таблиц содержащих [[CHECK]] ограничения с подзапросами могут вызвать нарушения ограничений.
 +
 +:!: Когда столбцы изменены или удалены любые данные,​ сохраненные в них, потеряны.
 +
 +===== Пример =====
 +Следующий пример добавляет столбец в таблицу и удаляет столбец:​
 +<​code>​
 +ALTER TABLE COUNTRY
 +  ADD CAPITAL VARCHAR(25),​
 +  DROP CURRENCY;
 +</​code>​
 +:!: Эта инструкция приводит к потере любых данных в удаленном столбце.
 +
 +Следующая инструкция добавляет два столбца в таблицу и определяет UNIQUE ограничение на одном из них:
 +<​code>​
 +ALTER TABLE COUNTRY
 +  ADD CAPITAL VARCHAR(25) UNIQUE,
 +  ADD LARGEST_CITY VARCHAR(25) NOT NULL;
 +</​code>​
 +
 +===== См. также =====
 +[[CREATE TABLE]], ​ [[DROP TABLE]], ​ [[CREATE DOMAIN]], ​ [[ALTER DOMAIN]], ​  ​[[DROP DOMAIN]]
 +
 +
 +===== Источник =====
 +langref.pdf
alter_table.txt · Последние изменения: 2008/05/02 03:33 (внешнее изменение)