Оператор удаления кортежей
. Оператор удаления кортежей имеет вид:
DELETE приемник; |
Здесь приемник
– любое реляционное выражение.
Удаляются все кортежи целевого отношения, произведенного приемником.
Пример:
DELETE (S WHERE Ci = ‘Яя’);
Будут удалены все кортежи отношения S, содержащие сведения о поставщиках, размещенных в Яе.
Реляционные выражения, встречающиеся в операторах INSERT, UPDATE, DELETE, определяют область действия этих операторов. Как правило, эти выражения оказываются либо именами базовых отношений, либо подмножествами кортежей этих отношений. Однако, в принципе, они могут определять какую угодно часть БД.
Подчеркнем, что операции обновления действуют на уровне множеств кортежей. Даже когда обновляется один кортеж, на самом деле обновляется множество, состоящее из одного элемента. Иногда обновление одноэлементного множества невозможно.
Например, в нашей БД может существовать ограничение целостности: «Все поставщики из Яи имеют одинаковые статусы».
Тогда операция
UPDATE (S WHERE S# = ’S1’) St := 50;
не может быть выполнена на уровне одного кортежа, если поставщик S1 размещается в Яе и есть еще поставщики из Яи. Такая операция должна быть либо преобразована системой в операцию
UPDATE (S WHERE Ci = ‘Яя’) St := 50;
обновляющую все кортежи, соответствующие поставщикам из Яи, либо отвергнута в соответствии с определенным правилом целостности.