Это видео недоступно.
Сожалеем об этом.

Язык SQL. INSERT и DELETE триггеры в базах данных SQLite.

Поделиться
HTML-код
  • Опубликовано: 16 дек 2016
  • Рубрика SQLite на сайте: zametkinapolyah...
    Текстовая версия: zametkinapolyah...
    Паблик блога в ВК: zametki...
    Тематическая группа в ВК: zametki_bd
    Помощь проекту:
    WMR: R288272666982
    WMZ: Z293550531456
    Яндекс.Деньги: 410011531129223
    -- INSERT и DELETE триггеры
    DROP TABLE users;
    DROP TABLE user_log;
    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,
    operation TEXT NOT NULL
    );
    -- Мы добавили столбец operation, в котором будем хранить информацию о том, что мы сделали с пользователем: удалили или добавили.
    -- Напишим новый INSERT триггер, который будет учитывать новый столбец
    CREATE TRIGGER my_u_log AFTER INSERT
    ON users
    BEGIN
    INSERT INTO user_log(id_u, u_date, operation) VALUES (NEW.id, datetime('now'),'ins');
    END;
    -- Напишем триггер, который будет срабатывать по событию удаления строк
    CREATE TRIGGER after_delete AFTER DELETE
    ON users
    BEGIN
    INSERT INTO user_log(id_u, u_date, operation) VALUES (OLD.id, datetime('now'), 'del');
    END;
    -- Сделаем проверку
    INSERT INTO users(name, age, address, mydate)
    VALUES ('Пупкин', 27, 'Адрес', datetime('now'));
    INSERT INTO users(name, age, address, mydate)
    VALUES ('Сумкин', 17, 'Адрес2', datetime('now'));
    INSERT INTO users(name, age, address, mydate)
    VALUES ('Иванов', 37, 'Адрес3', datetime('now'));
    INSERT INTO users(name, age, address, mydate)
    VALUES ('Петров', 47, 'Адрес4', datetime('now'));
    INSERT INTO users(name, age, address, mydate)
    VALUES ('Сидоров', 57, 'Адрес5', datetime('now'));
    INSERT INTO users(name, age, address, mydate)
    VALUES ('Парамонов', 7, 'Адрес6', datetime('now'));
    DELETE FROM users WHERE id = 4;
    SELECT * FROM user_log;
    SELECT * FROM users;
    -- давайте обратим внимание на код триггера AFTER DELETE, в котором мы использовали модификатор OLD, модификатор OLD в SQL и SQLite используется в коде триггера для того, чтобы обратиться к старому значению или к значению, которое хранится в таблице (значение, которое будет изменено или модифицировано).

Комментарии •