текст для баннера по необходимости

SQL запросы. INSTEAD OF триггеры в базах данных SQLite и редактирование VIEW

32 Просмотры
текст для баннера по необходимости  текст для баннера по необходимости
текст для баннера по необходимости
Издатель
Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Текстовая версия: http://zametkinapolyah.ru/zametki-o-mysql/tema-13-triggery-v-sql-na-primere-bazy-dannyx-sqlite.html
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd

Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

-- Редактирование VIEW при помощи INSTEAD OF триггера в SQLite


-- В SQLite нет возможности редактировать VIEW, Но мы можем манипулировать данными VIEW, которые хранятся в представлениях (данное выражение не совсем корректно, так как данные в представлениях не хранятся, это всего лишь результирующая таблица запроса SELECT) при помощи INSTEAD OF триггера.


-- UPDATE VIEW
CREATE TRIGGER trigg_name
INSTEAD OF UPDATE OF column_name ON view_name
BEGIN
-- делаем команду UPDATE для таблицы, на основе которой создана VIEW
END;


-- INSERT VIEW
CREATE TRIGGER trigg_name
INSTEAD OF INSERT ON view_name
BEGIN
-- делаем команду INSERT для таблицы, на основе которой создана VIEW
END;


-- DELETE VIEW
CREATE TRIGGER trigg_name
INSTEAD OF DELETE ON view_name
BEGIN
-- делаем команду DELETE для таблицы, на основе которой создана VIEW
END;

-- создадим представление
CREATE VIEW vw_city AS
SELECT city.name AS gorod, city.population AS naselenie
FROM city LIMIT 10;

-- посмотрим на нашу VIEW
SELECT * FROM vw_city;

-- Попробуем отредактировать VIEW
CREATE TRIGGER update_vw_city
INSTEAD OF UPDATE ON vw_city
BEGIN
UPDATE city SET name = NEW.gorod WHERE population = NEW.naselenie;
UPDATE city SET population = NEW.naselenie WHERE name = NEW.gorod;
END;

UPDATE vw_city SET gorod = 'Новое название города'
WHERE naselenie = 234323;

UPDATE vw_city SET naselenie = 15
WHERE gorod = 'Kabul';

SELECT * FROM vw_city;

SELECT * FROM city LIMIT 10;

-- по аналогии вы можете сделать свои триггеры для редактирования VIEW
Категория
Изучаем SQL
Выполните вход или зарегистрируйтесь для отправки комментария.
Комментариев нет.
текст для баннера по необходимости
текст для баннера по необходимости