Язык SQL. SQL событие AFTER или выполнение триггера после выполнения SQL запроса
Рубрика 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 
 
-- 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.
 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			
