Оглавление
На что следует обратить внимание
представлять
Триггер — это специальная хранимая процедура. Триггер, как и хранимая процедура, представляет собой функцию, которая может выполнять определенную функцию и храниться в данных.
Фрагмент SQL на сервере библиотеки, но триггер вызывать не нужно, он срабатывает автоматически при выполнении операции DML над данными в таблице базы данных.
Выполнение фрагментов SQL без ручного использования. В MySQL он может быть запущен только при выполнении операций вставки, удаления и обновления.
Выполнение триггеров. Эта функция триггеров может помочь приложениям обеспечить целостность данных, ведение журнала и проверку данных на стороне базы данных.
Подождите операции. Используйте псевдонимы OLD и NEW для ссылки на измененное содержимое записи в триггере, что аналогично другим базам данных.
из. В настоящее время триггеры поддерживают запуск только на уровне строк и не поддерживают запуск на уровне инструкций.
Характеристики триггера
1. Какие условия вызовут: I, D, U
2. Когда срабатывать: до или после добавления, удаления или изменения
3. Частота запуска: выполняется для каждой строки.
4. Триггер определен в таблице и прикреплен к таблице.
Формат
1. Создайте триггер только с одним оператором выполнения.
create trigger Имя триггера before|after триггерное событие
on имя таблицы for each row
выполнить заявление;
2. Создайте триггер с несколькими операторами выполнения.
create trigger Имя триггера before|after триггерное событие
on имя таблицы for each row
begin
Список операторов выполнения
end;
действовать
-- Подготовка данных
create database if not exists mydb10_trigger;
use mydb10_trigger;
-- Пользовательская таблица
create table user(
uid int primary key ,
username varchar(50) not null,
password varchar(50) not null
);
-- Информация о пользователе активирует таблицу журнала
create table user_logs(
id int primary key auto_increment,
time timestamp,
log_text varchar(255)
);
действовать
-- Если триггер существует, сначала удалите его.
drop trigger if exists trigger_test1;
-- Создать триггер триггер_test1
create trigger trigger_test1
after insert on user -- Время срабатывания: срабатывает при добавлении данных пользовательской таблицы.
for each row
insert into user_logs values(NULL,now(), 'Зарегистрировался новый пользователь');
-- Добавляйте данные, запускайте автоматизацию и добавляйте код регистрации.
insert into user values(1,'Чжан Сан','123456');
действовать
-- Если триггер триггер_test2 существует, сначала удалите его.
drop trigger if exists trigger_test2;
-- Создать триггер триггер_test2
delimiter $$
create trigger trigger_test2
after update on user -- Время срабатывания: срабатывает при изменении данных пользовательской таблицы.
for each row -- каждая строка
begin
insert into user_logs values(NULL,now(), «Пользовательская модификация была изменена»);
end $$
delimiter ;
-- Добавляйте данные, запускайте автоматизацию и добавляйте код регистрации.
update user set password = '888888' where uid = 1;
Формат
NEW и OLD определены в MySQL для представления строки данных в таблице, где находится триггер, который запускает триггер.
Используйте измененное содержимое записи в триггере, а именно:
Использование: NEW.columnName (columnName — это имя столбца в соответствующей таблице данных).
действовать
create trigger trigger_test3 after insert
on user for each row
insert into user_logs значения(NULL,now(),concat('Был добавлен новый пользователь, информация:',NEW.uid,NEW.username,NEW.password));
-- тест
insert into user values(4,'Чжао Лю','123456');
активировать - просмотреть триггер
show triggers;
активировать - удалить триггер
-- drop trigger [if exists] trigger_name
drop trigger if exists trigger_test1;
1. Эту таблицу нельзя использовать в триггерах в MYSQL. insert ,update ,delete действовать,Чтобы избежать запуска рекурсивных циклов
2. Используйте триггеры как можно меньше. Предположим, что триггер выполняется каждый раз в течение 1 секунды и вставляет в таблицу 500 фрагментов данных. Затем вам нужно вызвать 500.
Триггер, время выполнения одного только триггера занимает 500 с, а вставка 500 фрагментов данных занимает всего 1 с, затем вставка
Эффективность очень низкая.
3. Триггеры предназначены для каждой строки; не забывайте использовать триггеры в таблицах, в которых добавления, удаления и изменения происходят очень часто, поскольку это потребует много ресурсов.
источник.