- Разработка
- Бизнес
- ИТ и ПО
- Личностный рост
- Дизайн
- Маркетинг
- Красота
- Фотография и видео
- Здоровье и спорт
- Музыка
- Образование
- Подготовка к экзаменам
- Языки
- Работа на компьютере
- Строительство и ремонт
- Кулинария
- Сельское хозяйство
- Фриланс
- ПДД и вождение
- Игры
- Школьное образование
- Профессиональная ориентация
- Шитье и кожевенное дело
- Рукоделие
- Каменные и столярные работы
- Собеседование
- Рыбалка и охота
- Страны
SQL запросы. INSTEAD OF триггеры в базах данных SQLite и редактирование VIEW
Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Текстовая версия: http://zametkinapolyah.ru/zame....tki-o-mysql/tema-13-
Паблик блога в ВК: 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