Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ud / lab3.docx
Скачиваний:
5
Добавлен:
09.04.2015
Размер:
60.57 Кб
Скачать

Транзакции

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

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-скриптов с транзакциями.

Соседние файлы в папке ud