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

Язык SQL. SQL событие AFTER или выполнение триггера после выполнения SQL запроса

3 Просмотры
Издатель
Рубрика 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

-- SQL событие AFTER
-- Давайте теперь изменим наш пример, таблица останется той же, но мы изменим код триггера, только одну его часть: поменяем BEFORE на AFTER, чтобы посмотреть, как сработает триггер после выполнения запроса:


-- Создадим две таблицы

CREATE TABLE users(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL,
address TEXT NOT NULL,
mydate TEXT NOT NULL
);

CREATE TABLE user_log (
Id_u INTEGER NOT NULL,
u_date TEXT NOT NULL
);

CREATE TRIGGER my_u_log AFTER INSERT
ON users
BEGIN
INSERT INTO user_log(id_u, u_date) VALUES (NEW.id, datetime('now'));
END;

-- Сделаем проверку
INSERT INTO users(name, age, address, mydate)
VALUES ('Пупкин', 27, 'Адрес', datetime('now'));
INSERT INTO users(name, age, address, mydate)
VALUES ('Сумкин', 17, 'Адрес2', datetime('now'));

SELECT * FROM users;
SELECT * FROM user_log;

-- Теперь идентификаторы записываются корректно во вторую таблицу. Обратите внимание на модификатор NEW. Модификатор NEW – это ключевое слово, которое используется в теле триггера для того, чтобы сказать СУБД о том, что нужно брать новые значения (значение, которое мы добавляем в таблицу или модифицированный вариант значения). Надеюсь, что вы разобрались в разнице между BEFORE и AFTER.
Категория
Изучаем SQL
Выполните вход или зарегистрируйтесь для отправки комментария.
Комментариев нет.