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

Язык SQL. SQL событие BEFORE или выполнение триггера перед выполнением SQL запроса

49 Просмотры
текст для баннера по необходимости  текст для баннера по необходимости
текст для баннера по необходимости
Издатель
Рубрика 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 событие BEFORE


-- В SQLite нет табличных триггеров, а есть только триггеры строчные,
-- то есть FOR EACH ROW триггеры, которые срабатывают при изменении каждой строки в таблице.
-- Давайте напишем триггер, который будет срабатывать
-- при вставке данных в базу данных, до того, как будет выполнена операция вставки.


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

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 BEFORE 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'));

SELECT * FROM users;
SELECT * FROM user_log;

-- К сожалению, поле date в данном случае не показывает, что вставка данных в таблицу user_log произошла до того, как были вставлены данные в таблицу users. Но этот факт мы можем заметить по значению столбца id_u, которое равно -1, так как SQLite3 просто не знает: какое значение будет в столбце id таблицы users.
Категория
Изучаем SQL
Выполните вход или зарегистрируйтесь для отправки комментария.
Комментариев нет.
текст для баннера по необходимости
текст для баннера по необходимости