Alter (SQL)

ALTER - оператор DDL мови SQL, що використовується для зміни властивостей об'єктів баз даних. Типи об'єктів, які можуть бути змінені, залежать від використовуваної СКБД.

ALTER TABLE

Оператор ALTER TABLE використовується для додавання, зміни чи вилучення стовпчиків або обмежень у наявній таблиці. Оператор не працюватиме, коли наявні в таблиці записи порушують обмеження первинного ключа чи унікальності, а також якщо стовпчик, який намагаються вилучити, входить до обмежень UNIQUE, PRIMARY KEY, FOREIGN KEY чи CHECK, або застосовується для обчислення іншого стовпчика.

Повноваження

У користувача мають бути повноваження на внесення відповідних змін. Потрібні повноваження залежать від конкретної СКБД та від того, які саме зміни робляться.

Oracle

Користувач має бути власником (англ. owner) таблиці, яку він намагається змінити, або ж користувачеві має бути надано повноваження на зміни в цій таблиці (ALTER) чи повноваження на зміну будь-якої таблиці на рівні всієї системи (ALTER ANY TABLE).

Додаткові передумови для операцій з розділами
Якщо користувач не є власником таблиці, то для використання функцій drop_table_partition і truncate_table_partition у нього мають бути повноваження DROP ANY TABLE, а для використання функцій add_table_partition, modify_table_partition, move_table_partition і split_table_partition у нього має бути квота в табличному просторі.
Додаткові передумови для обмежень і тригерів
Для увімкнення режиму батьківського контролю унікального або первинного ключа у користувач мають бути повноваження на створення індексів у таблиці. Ці повноваження необхідні, оскільки Oracle Database створює індекси в межах унікального або первинного ключа у схемі, що містить дану таблицю. Для увімкнення чи вимкнення тригерів користувач має бути їх власником або ж у нього мають бути системні повноваження ALTER ANY TRIGGER.
Додаткові передумови при використанні типів об'єктів
Для використання типу об'єкта у визначенні стовпчика при зміні таблиці власником такого об'єкта має бути власник змінюваної таблиці або ж у користувача мають бути системні повноваження EXECUTE ANY TYPE чи повноваження EXECUTE для такого об'єкта.
Додаткові передумови для операцій архівування ретроспективних даних
Для використання функції flashback_archive_clause з метою ввімкнення відстеження історії для таблиці користувач повинен мати повноваження FLASHBACK ARCHIVE в архіві даних ретроспективного аналізу, який міститиме історичні дані. Для вимкнення відстеження історії для таблиці у користувача мають бути системні повноваження FLASHBACK ARCHIVE ADMINSTER.

Синтаксис

Загальний синтаксис оператора ALTER TABLE має вигляд:

 ALTER TABLE "table_name"
[Alter specification];
Додавання стовпчика
ALTER TABLE "table_name"
ADD "column_name" "data_type";
Зміна типу даних стовпчика
MySQL і Oracle
ALTER TABLE "table_name"
MODIFY "column_name" "new_data_type";
SQL Server
ALTER TABLE "table_name"
ALTER COLUMN "column_name" "new_data_type";
Перейменування стовпчика
MySQL
ALTER TABLE "table_name"
CHANGE "column_1" "column_2" "data_type";
Oracle
ALTER TABLE "table_name"
RENAME COLUMN "column_1" TO "column_2";
Видалення стовпчика
MySQL
ALTER TABLE "table_name"
DROP "column_name";
Oracle
ALTER TABLE "table_name"
DROP COLUMN "column_name";
Додавання індексу
ALTER TABLE "table_name"
ADD INDEX "index_name" (column_name);
Видалення індексу
ALTER TABLE "table_name"
DROP INDEX "index_name";
Додавання обмеження
ALTER TABLE "table_name"
ADD "CONSTRAINT_NAME" "CONSTRAINT_TYPE" "CONSTRAINT_CONDITION";
Видалення обмеження
ALTER TABLE "table_name"
DROP [CONSTRAINT | INDEX] "CONSTRAINT_NAME";

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.