Как запрограммировать триггер MySQL для вставки строки в другую таблицу?
Я ищу, чтобы создать триггер MySQL на таблице. По сути, я создаю stream активности и должен регистрировать действия пользователей. Когда пользователь делает комментарий, я хочу запустить триггер базы данных на этой таблице и:
- Возьмите идентификатор последней вставленной строки (идентификатор строки комментария).
- выполните INSERT в таблицу действий, используя данные из последней вставленной строки.
Я по существу повторю этот триггер для удаления комментариев.
Вопросы, которые у меня были:
- Изменить символ по умолчанию MySQL на UTF-8 в my.cnf?
- Выбор всех столбцов, начинающихся с XXX с помощью шаблона?
- Поведение MySQL «выберите для обновления»
- Как пропускать столбцы в CSV-файле при импорте в таблицу MySQL с помощью LOAD DATA INFILE?
- Как правильно создавать составные первичные ключи - MYSQL
- LAST_INSERT_ID () лучший способ захватить идентификатор?
- Как правильно хранить данные из последней вставленной строки комментариев для использования в инструкции «INSERT into activities»?
- Должен ли я использовать комбинацию хранимых процедур, а также триггер?
- Как бы выглядела основная структура триггера?
Благодаря! Прошло несколько лет с тех пор, как я затронул все, что связано с триггерами, процедурами и функциями DB.
- MySQL хранимой процедуры против функции, которую я буду использовать, когда?
- Amazon EC2, mysql прерывает запуск, потому что InnoDB: mmap (x bytes) не удалось; errno 12
- Как повторно синхронизировать Mysql DB, если у Master и slave есть разная firebase database с репликацией Mysql?
- Сортировка столбца строки, содержащего числа в SQL?
- Получить все столбцы из всех таблиц MySQL
- mysql error 1364 Поле не имеет значений по умолчанию
- Перенос из Oracle в MySQL
- Любой способ выбрать, не вызывая блокировки в MySQL?
drop table if exists comments; create table comments ( comment_id int unsigned not null auto_increment primary key, user_id int unsigned not null ) engine=innodb; drop table if exists activities; create table activities ( activity_id int unsigned not null auto_increment primary key, comment_id int unsigned not null, user_id int unsigned not null ) engine=innodb; delimiter # create trigger comments_after_ins_trig after insert on comments for each row begin insert into activities (comment_id, user_id) values (new.comment_id, new.user_id); end# delimiter ; insert into comments (user_id) values (1),(2); select * from comments; select * from activities;
Редактировать:
mysql> \. d:\foo.sql Database changed Query OK, 0 rows affected (0.10 sec) Query OK, 0 rows affected (0.30 sec) Query OK, 0 rows affected (0.11 sec) Query OK, 0 rows affected (0.35 sec) Query OK, 0 rows affected (0.07 sec) Query OK, 2 rows affected (0.03 sec) Records: 2 Duplicates: 0 Warnings: 0 +------------+---------+ | comment_id | user_id | +------------+---------+ | 1 | 1 | | 2 | 2 | +------------+---------+ 2 rows in set (0.00 sec) +-------------+------------+---------+ | activity_id | comment_id | user_id | +-------------+------------+---------+ | 1 | 1 | 1 | | 2 | 2 | 2 | +-------------+------------+---------+ 2 rows in set (0.00 sec)