INSERT INTO seats VALUES ( '123', '1A', 'Business' ); СУБД ответит так:
ОШИБКА: INSERT или UPDATE в таблице "seats" нарушает ограничение внешнего
ключа "seats_aircraft_code_fkey"
,
→
ПОДРОБНОСТИ: Ключ (aircraft_code)=(123) отсутствует в таблице
"aircrafts".
,
→
Это совершенно логично: если в таблице «Самолеты», на которую ссылается таблица
«Места», нет описания самолета с кодом самолета, равным «123», то добавлять ин-
формацию о номерах кресел для такого — несуществующего — самолета не имеет
смысла. Так действует поддержка правил ссылочной целостности со стороны СУБД.
Программист избавлен от необходимости отслеживать и обеспечивать «вручную» со-
блюдение этих правил.
Теперь нужно заполнить данными таблицу «Места». Для каждой модели самолетов
введите только несколько строк, при этом предусмотрите записи для классов обслу-
живания «Business» и «Economy». С помощью одной команды INSERT можно ввести
сразу несколько строк:
INSERT INTO seats VALUES ( 'SU9', '1A', 'Business' ), ( 'SU9', '1B', 'Business' ), ( 'SU9', '10A', 'Economy' ), ( 'SU9', '10B', 'Economy' ), ( 'SU9', '10F', 'Economy' ), ( 'SU9', '20F', 'Economy' ); Затем измените значение атрибута aircraft_code на другое, например, «773», и повто-
рите команду INSERT. Так придется поступить со всеми моделями самолетов.
Таблица «Места» заполнена необходимыми данными. Теперь решим еще одну зада-
чу. Предположим, что нам нужно получить информацию о количестве мест в салонах
для всех типов самолетов. Имея некоторый опыт в программировании на других язы-
ках, нетрудно предположить, что в языке SQL должна присутствовать функция для
подсчета количества строк в таблицах. Да, такая функция есть — это count. Конечно,
для решения задачи, поставленной выше, в принципе можно воспользоваться таки-
ми командами: