Транзакции
Я попробовал
запустить скрипт следующего вида: запрос
модификации базы данных, предваренный
командой начала транзакции и замыкаемый
командой отмены запросов, поступивших
после начала транзакции. Команда внутри
транзакционного блока сама по себе
вставляет строку в таблицу продавцов.
Так выглядит скрипт:
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-скриптов с
транзакциями.