Транзакции
Я попробовал
запустить скрипт следующего вида: запрос
модификации базы данных, предваренный
командой начала транзакции и замыкаемый
командой отмены запросов, поступивших
после начала транзакции. Команда внутри
транзакционного блока сама по себе
вставляет строку в таблицу продавцов.
Так выглядит скрипт:
START
TRANSACTION;
INSERT
INTO salespeople
(snum,
sname,
city,
comm)
VALUES
(DEFAULT,
"Михаил
Обжоров",
"Нижний
Новгород",
"0.10");
ROLLBACK;
Вполне естественно,
что после запуска скрипта никаких
изменений в таблицах не произошло.
Команда ROLLBACKвернула таблицу
продавцов к тому виду, в котором таблица
была на момент исполнения команды START
TRANSACTION.
Изменим
скрипт, вставив вместо команды отмены
в конце команду подтверждения транзакции:
START
TRANSACTION;
INSERT
INTO salespeople
(snum,
sname,
city,
comm)
VALUES
(DEFAULT,
"Михаил
Обжоров",
"Нижний
Новгород",
"0.10");
COMMIT;
Так станет выглядеть
таблица продавцов:
|
|
|
|
snum |
sname |
city |
comm |
1 |
Иван
Жадов |
Нижний
Новгород |
0,12 |
2 |
Федор
Захапов |
Нижний
Новгород |
0,15 |
3 |
Максим
Хитров |
Нижний
Новгород |
0,14 |
4 |
Алиса
Тырь |
Бор |
0,1 |
9 |
Михаил
Обжоров |
Нижний
Новгород |
0,1 |
Как видно, в таблице
продавцов появилась запись с Михаилом
Обжоровым — это значит, что запрос
внутри транзакционного блока выполнился
успешно. Именно этого результата мы и
добивались, употребив команду COMMIT.
Вывод
В результате
выполнения лабораторной работы я изучил
особенности функционирования внешних
ключей — в особенности поддержание с
их помощью целостности данных в базе —
а также ознакомился с простейшими
примерами SQL-скриптов с
транзакциями.