Часть 11.5: Каскадная модификации данных в базах данных SQLite3

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. На своём блоге я уже довольно много писал про обеспечение целостности данных в реляционных базах данных и для примера мы используем замечательную встраиваемую библиотеку SQLite. Замечу, что многое из того, что написано актуально и для других серверов баз данных. Впрочем, с темой поддержания целостности данных мы почти закончили. Перейдем к рассмотрению каскадных операций манипуляции данными в SQLite. В базах данных SQLite таких операции реализовано две: каскадная модификация данных и каскадное удаление данных. Из этой публикации вы узнаете про каскадную модификацию данных в базах данных под управлением SQLite3.

Каскадная модификации данных в базах данных SQLite3

Каскадная модификации данных в базах данных SQLite3

Каскадная модификация данных позволяет избежать нарушения правила внешнего ключа, с помощью которого мы реализуем связи между таблицами в базе данных. Помимо этого, каскадная модификация уменьшает количество SQL запросов, необходимых для внесения изменения значений, которые хранятся в связанных таблицах. Сперва мы поговорим о реализации каскадной модификации данных в SQLite3, а затем рассмотрим пример каскадной модификации данных в базах данных.


Каскадная модификация данных в базе данных SQLite. ON UPDATE в SQLite3

Обеспечение целостности данных – очень важная тема при рассмотрение любой СУБД, когда мы рассматривали ограничения уровня таблица, а точнее внешние ключи в базах данных SQLite3, то столкнулись с тем, что для модификации данных таблицы со ссылкой при помощи команды UPDATE, нам было необходимо сперва изменить данные в таблице-справочнике, а уже затем изменять данные в таблице, которая ссылается на справочник.

С этой проблемой нам поможет справиться каскадная модификация данных. Каскадная модификация данных в базах данных SQLite реализована при помощи ON UPDATE. Ключевая фраза ON UPDATE позволяет нам избавиться от сложностей модификации таблиц в базе данных, которые связаны между собой внешним ключом FOREIGN KEY.

Как понимать фразу каскадная модификация? Всё дело в том, что ключевая фраза ON UPDATE CASCADE, которая указывается после FOREIGEN KEY говорит СУБД о том, что та должна модифицировать обе таблицы друг за другом – каскадно. Таким образом, указав SQLite, что данные должны модфицироваться каскадом, мы сможем написать только один SQL запрос UPDATE, а SQLite сама обновит обе таблицы.

Каскадную модификацию ON UPDATE лучше показать на примере, так будете доступнее, понятнее и нагляднее.

Примеры каскадной модификации данных в базе данных SQLite. ON UPDATE в SQLite3

Давайте посмотрим пример каскадной модификации ON UPDATE в базах данных SQLite. Для этого создадим две таблицы, связанных внешним ключом, при помощи команды CREATE.

При создании таблиц с внешним ключом не забывайте о команде PRAGMA. Заметили конструкцию ON UPDATE CASCADE после ключевого слова REFERENCE? Данная конструкция говорит SQLite о том, что при обновление данных она должна обновить данные в обеих таблицах, тем самым мы избежим двух вещей: нам не нужно будет два раза использовать команду UPDATE и мы избежим нарушения ограничения внешнего ключа.

Давайте добавим несколько строк в таблицы базы данных командой INSERT:

Ничего нового мы не сделали, но теперь давайте попробуем модифицировать данные в таблицах командой UPDATE. Давайте заменим Льву Толстому значение id.

Мы можем проверить результаты модификации, сделав выборку данных из таблицы базы данных, для этого есть команда SELECT:

Обратите внимание на результат:

Благодаря конструкции ON UPDATE CASCADE изменения в базу данных были внесены автоматически. Каскадная модификация данных позволяет вносить изменения в базу данных автоматически и при этом, не нарушая ограничение внешнего ключа.

Текст комментария: