VALUES (список значений)

Если в команде список имен столбцов опущен, то будут последовательно заполнены все столбцы в том порядке, в котором они были указаны в команде CREATE TABLE.

Например:

INSERT INTO subjects VALUES (5, ‘Базы данных’)

INSERT INTO students (cod_st, name_st, born) VALUES (3, ‘Петров’,’12.03.1990’)

Во второй команде столбец phone (телефон) таблицы students можно оставить незаполненным, т.к. на него не наложено ограничение NOT NULL.

Рассмотрим, при каких ситуациях данные команды могут привести к ошибке. В случае вставки нового предмета таких ситуаций две – уже есть предмет либо с кодом 5, либо с названием Базы данных (оба столбца предполагают проверку уникальности). Во втором случае на уникальность будет проверен только один столбец cod_st.

Команда

INSERT INTO subjects(cod_st, cod_sub, mark) VALUES (3, 5, 1)

в нашей демонстрационной базе данных не имеет никаких шансов выполниться, поскольку на столбец mark наложено ограничение

CHECK (mark BETWEEN 2 AND 5)

Исправим оценку:

INSERT INTO subjects(cod_st, cod_sub, mark) VALUES (3, 5, 4)

Мы уже знаем, что предмет с кодом 5 существует, как и студент с кодом 3, значит, ограничения внешнего ключа не нарушены. Однако может случиться последняя из возможных исключительных ситуаций – нарушение уникальности составного первичного ключа таблицы mark (студент с кодом 3 уже имеет оценку по предмету с кодом 5). В случае, если уникальность не нарушена, новая строка благополучно добавится в таблицу marks.

Вариант 2 – вставка множества строк на основе запроса по другим таблицам

Команда имет вид:

INSERT INTO имя таблицы [(список столбцов)]

SELECT … (запрос на выборку из других таблиц)

Например:

INSERT INTO marks (cod_st, cod_sub)

SELECT students.cod_st, subject.cod_sub

FROM students, subject WHERE cod_sub=5

В данном примере в таблицу оценок будут добавлены все студенты, а в качестве предмета будет помещен предмет с кодом 5 (команда SELECT будет подробно рассмотрена в следующих лекциях). Теперь преподавателю этого предмета достаточно только проставить оценки в уже созданных строках.

При выполнении команды ограничения проверяются для каждой вставляемой строки и в случае их нарушения хотя бы для одной из строк все данные не будут добавлены. Например, если кто-либо из студентов уже имеет оценку по предмету с кодом 5, автоматически выполнится команда ROLLBACK - откат.

Команда не выполнилась бы и в том случае, если бы на столбец mark было наложено ограничение NOT NULL.








Дата добавления: 2015-08-26; просмотров: 1155;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.