Изменение типа атрибута, размера типа и наличия опции not null 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Изменение типа атрибута, размера типа и наличия опции not null



Для изменения типа данных атрибута, размера типа данных или наличия опции NOT NULL используется следующие синтаксис:

 

ALTER TABLE имя_таблицы MODIFY поле тип [ ограничения ];

 

Например, для изменения размера типа данных атрибута D_id в таблице Dealers можно выполнить следующую команду:

 

ALTER TABLE Dealers MODIFY D_id NUMBER(8) NOT NULL;

 

При изменении типов данных и размеров типов данных атрибутов следует соблюдать осторожность. Дело в том, что при «сужении» области допустимых значений, который может принимать атрибут, могут быть утеряны («обрезаны») данные, выходящие за пределы новой области допустимых значений.

Создание первичного ключа

Для создания первичного ключа используется следующий синтаксис:

 

ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения

PRIMARY KEY(список_полей);

Например, для создания первичного ключа таблицы Dealers можно выполнить следующую команду:

 

ALTER TABLE Dealers ADD CONSTRAINT Dealers_pk

RIMARY KEY(D_id);

Если создаваемый первичный ключ является составным, то есть состоит из нескольких атрибутов, атрибуты перечисляются через запятую.

 

Создание уникального ключа

Для создания уникального ключа используется следующий синтаксис:

 

ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения

UNIQUE(список_полей);

 

Например, для создания уникального ключа в таблице Dealers, гарантирующего уникальность значений в атрибуте Name, можно выполнить следующую команду:

 

ALTER TABLE Dealers ADD CONSTRAINT Dealers_Name_uk

UNIQUE (Name);

 

Создание домена

Для создания домена используется следующий синтаксис:

 

ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения

CHECK(условное_выражение);

 

При наличии домена в таблице, каждый раз при изменении или добавлении значений в атрибуты, затрагиваемые условным выражением, СУБД будет проверять новое значение атрибутов на удовлетворение указанному выражению. Новое значение будет присвоено атрибуту только в том случае, если значение удовлетворяет указанному условию. При составлении условных выражений можно использовать логические операции >, <, >=, <=, <>, =, функции IN (проверка вхождения в множество), BETWEEN (проверка вхождения в диапазон), LIKE (проверка на удовлетворению шаблону). Кроме того, несколько условных выражений можно комбинировать при помощи логических операторов AND, OR и NOT.

ALTER TABLE Dealers ADD CONSTRAINT Dealers_Procent_check

CHECK(Procent >= 0);

Создание внешнего ключа

Для добавления внешнего ключа используется следующий синтаксис:

 

ALTER TABLE имя_подчиненной_таблицы

ADD CONSTRAINT имя_ограничения

FOREIGN KEY(список_полей_подчиненной_таблицы)

REFERENCES имя_главной_таблицы (список_полей_главной_таблицы)

[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION]

[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION];

 

Параметры ON UPDATE и ON DELETE указываются при необходимости осуществлять каскадные действия при, соответственно, изменении или удалении значений атрибутов первичного ключа главной таблицы. При попытке изменения значения атрибута, входящего в состав первичного ключа, или удаления строки, на которую ссылаются строки из подчиненных таблиц, СУБД принимает решение либо о выполнении одного из каскадных действий, либо о запрещении SQL-оператора, изменяющего или удаляющего строку в главной таблице.

Если параметры ON UPDATE или ON DELETE равны NO ACTION или они не указаны совсем, СУБД запретит выполнение SQL-оператора, нарушающего ссылочную целостность.

Если после параметров ON UPDATE или ON DELETE стоит значение CASCADE, то произойдет каскадное изменение или удаление строк в подчиненных таблицах. Иными словами, при удалении строки из главной таблицы, будут удалены все строки в подчиненных таблицах, которые ссылались на удаляемую строку. При изменении значения первичного ключа главной таблицы и наличии параметра ON UPDATE со значением CASCADE все значения внешних ключей, ссылающихся на изменяемый атрибут, также изменят свое значение.

Использовать значение CASCADE параметров ON UPDATE и ON DELETE следует с особой осторожностью, поскольку одна ошибочная команда, например, удаления строки в одной из таблиц может повлечь за собой необратимые последствия, которые могут привести к полной неработоспособности приложений базы данных. Если все-таки необходимо выполнять каскадное изменение или удаление данных в подчиненных таблицах, рекомендуется, по возможности, реализовывать это посредством хранимых процедур.

Указание значения SET NULL для параметров ON UPDATE или ON DELETE приведет к тому, что значения атрибутов внешних ключей, ссылающихся на изменяемое значение первичного ключа, установится в NULL.

Указание значения SET DEFAULT для параметров ON UPDATE или ON DELETE приведет к тому, что значения атрибутов внешних ключей, ссылающихся на изменяемое значение первичного ключа, примут значение по умолчанию, заданное при создании таблицы.

Пример создания внешнего ключа, связывающего таблицы Managers и Dealers можно выполнить следующую команду:

 

ALTER TABLE Managers ADD CONSTRAINT Managers_Dealers_fk

FOREIGN KEY(D_id) REFERENCES Dealers(D_id);



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 133; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.100.42 (0.006 с.)