Учебное пособие Санкт-Петербург «бхв-петербург»



Pdf көрінісі
бет92/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   88   89   90   91   92   93   94   95   ...   256
sql osnovi yazika

Глава 5. Основы языка определения данных
(aircrafts). Дадим ему имя speed (наверное, можно предложить и более длинное
имя — cruise_speed). Тип данных для этого столбца выберем integer, добавим
ограничение NOT NULL. Наложим ограничение и на минимальное значение крейсер-
ской скорости, выраженное в километрах в час: CHECK( speed >= 300 ). В результате
сформируем такую команду для добавления столбца:
ALTER TABLE airports
ADD COLUMN speed integer NOT NULL CHECK( speed >= 300 );
При попытке выполнить эту команду СУБД выдает сообщение об ошибке:
ОШИБКА: столбец "speed" содержит значения NULL
Как понимать это сообщение: кто виноват и что делать? Дело в том, что в таблице
«Самолеты» уже есть строки. Однако во время добавления тех строк столбец speed
в таблице не присутствовал, поэтому при его добавлении сейчас значение данного
атрибута в этих строках будет отсутствовать, т. е. будет равно NULL. А мы наложили
ограничение NOT NULL, следовательно, ранее добавленные строки не отвечают ново-
му ограничению.
Как же можно выйти из этой ситуации? Один из вариантов такой: сначала добавить
столбец, не накладывая на его значения никаких ограничений, затем ввести зна-
чения нового атрибута в уже существующие строки, причем эти значения должны
удовлетворять тем ограничениям, которые мы собираемся наложить. После этого на-
кладываем все необходимые ограничения. Получаем такую группу команд:
ALTER TABLE aircrafts ADD COLUMN speed integer;
UPDATE aircrafts SET speed = 807 WHERE aircraft_code = '733';
UPDATE aircrafts SET speed = 851 WHERE aircraft_code = '763';
UPDATE aircrafts SET speed = 905 WHERE aircraft_code = '773';
UPDATE aircrafts SET speed = 840
WHERE aircraft_code IN ( '319', '320', '321' );
UPDATE aircrafts SET speed = 786 WHERE aircraft_code = 'CR2';
UPDATE aircrafts SET speed = 341 WHERE aircraft_code = 'CN1';


Достарыңызбен бөлісу:
1   ...   88   89   90   91   92   93   94   95   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет