Команда 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 ограничения с подзапросами могут вызвать нарушения ограничений.
Предостережение: Когда столбцы изменены или удалены, любые данные, сохраненные в них, потеряны.