ALTER TABLE (InterBase)

Команда ALTER TABLE

Соглашения о присвоении имен

При выборе имен для объектов, в частности для таблиц и столбцов, имя должно соответствовать хранящимся данным. Например, для таблицы, в которой предполагается хранить информацию о служащих, подойдет имя EMPLOYEE_TBL. Той же логике должны следовать и имена столбцов. Для столбца, в котором будет храниться номер телефона служащего, очевидно подходящим именем будет PHONE_NUMBER.

Выясните, какие ограничения на длину имен и допустимые символы имеет ваша реализация SQL – эти ограничения для разных реализаций различны.

Таблицу можно модифицировать и после ее создания с помощью команды ALTER TABLE. С помощью этой команды можно добавлять и удалять столбцы, менять определения столбцов, добавлять и удалять ограничения, а в некоторых реализациях и модифицировать значения, задаваемые ключевым словом STORAGE. Стандартный синтаксис команды ALTER TABLE следующий:

ALTER TABLE ИМЯ_ТАБЛИЦЫ [MODIFY] [COLUMN ИМЯ_СТОЛБЦА] [ТИП ДАННЫХ|NULL NOT NULL]

[RESTRICT|CASCADE] [DROP] [CONSTRAINT ИМЯ_ОГРАНИЧЕНИЯ]

[ADD] [COLUMN] ОПРЕДЕЛЕНИЕ СТОЛБЦА.

 

MS SQL:

ALTER TABLE table_name

{ [ ALTER COLUMN column_name

{DROP DEFAULT

| SET DEFAULT constant_expression

| IDENTITY [ ( seed , increment ) ]

}

| ADD

{ < column_definition > | < table_constraint > } [ ,...n ]

| DROP

{ [ CONSTRAINT ] constraint_name

| COLUMN column }

] }

< column_definition > ::=

{ column_name data_type }

[ [ DEFAULT constant_expression ]

| IDENTITY [ ( seed , increment ) ]

]

[ROWGUIDCOL]

[ < column_constraint > ] [ ...n ] ]

< column_constraint > ::=

[ NULL | NOT NULL ]

[ CONSTRAINT constraint_name ]

{

| { PRIMARY KEY | UNIQUE }

| REFERENCES ref_table [ (ref_column) ]

[ ON DELETE { CASCADE | NO ACTION } ]

[ ON UPDATE { CASCADE | NO ACTION } ]

}

< table_constraint > ::=

[ CONSTRAINT constraint_name ]

{ [ { PRIMARY KEY | UNIQUE }

{ ( column [ ,...n ] ) }

| FOREIGN KEY

( column [ ,...n ] )

REFERENCES ref_table [ (ref_column [ ,...n ] ) ]

[ ON DELETE { CASCADE | NO ACTION } ]

[ ON UPDATE { CASCADE | NO ACTION } ]

}

 

 

ALTER TABLE дает возможность изменить структуру существующей таблицы. Одиночная инструкция ALTER TABLE может выполнить множественные добавления и удаления.

Именование ограничения столбца факультативно. Если имя не определено, InterBase назначает сгенерированное системой имя. Присвоение описательно имени может сделать ограничение проще для поиска, изменения или удаления, а так же проще для поиска, когда это имя появляется в сообщениях об ошибках нарушения ограничения.

Таблица может быть изменена ее создателем и пользователем SYSDBA.

Инструкция ALTER TABLE терпит неудачу, если текущие данные в таблице нарушают PRIMARY KEY или UNIQUE ограничение, добавленное к таблице. Инструкция так же терпит неудачу, если столбец, который должен быть удален:

  • Часть UNIQUE, PRYMARY или FOREGN KEY ограничения или используется в CHECK ограничении.
  • Используется в выражении вычисляемого столбца.

Удалите ограничения или вычисляемые столбцы прежде удаления столбца таблицы. Ограничения PRIMARY KEY и UNIQUE не могут быть удалены, если используются для FOREIGN KEY ограничений. В этом случае, удалите ограничение FOREIGN KEY раньше удаления PRIMARY KEY или UNIQUE ключа, на которые оно ссылается.

Когда происходит изменение столбца основанного на домене, дополнительные CHECK ограничения могут быть заданны для столбца. Изменение таблиц содержащих CHECK ограничения с подзапросами могут вызвать нарушения ограничений.

Предостережение: Когда столбцы изменены или удалены, любые данные, сохраненные в них, потеряны.