SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.04.2018 08:55:36

ThreeDHead
Участник
Зарегистрирован: 17.04.2018
Сообщений: 5

Существуют ли события в MySQL? (не шедулер!)

Всё что ищу - всё указывает на планировщик. При чем тут "события" мне не ясно.

В MySQL мне необходимо отловить событие вставки новой записи в некую таблицу.
Без нормального механизма именно событий, в голову приходит что только регулярное чтение генератора (id) этой таблицы, как изменилось значение - событие. Но это слишком "в лоб", очень "грязно".

В Firebird-SQL есть события, которые можно вызывать в триггерах. Допустим при вставки новой записи в таблицу, триггер вызовет событие, которое поймает listener (допустим на другом ПК) и произведет какие-либо действия (чтение например).

Как быть?

Неактивен

 

#2 17.04.2018 08:57:41

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 355

Re: Существуют ли события в MySQL? (не шедулер!)

А чем обычный триггер не устраивает?

Неактивен

 

#3 17.04.2018 09:25:32

ThreeDHead
Участник
Зарегистрирован: 17.04.2018
Сообщений: 5

Re: Существуют ли события в MySQL? (не шедулер!)

klow написал:

А чем обычный триггер не устраивает?

Чем мне поможет триггер?

Неактивен

 

#4 17.04.2018 11:45:55

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 355

Re: Существуют ли события в MySQL? (не шедулер!)

мне необходимо отловить событие вставки новой записи в некую таблицу.

Поможет отловить именно это событие. Даже два события: до вставки и после вставки.

Отредактированно klow (17.04.2018 11:47:12)

Неактивен

 

#5 17.04.2018 12:24:50

ThreeDHead
Участник
Зарегистрирован: 17.04.2018
Сообщений: 5

Re: Существуют ли события в MySQL? (не шедулер!)

klow написал:

мне необходимо отловить событие вставки новой записи в некую таблицу.

Поможет отловить именно это событие. Даже два события: до вставки и после вставки.

Топология:
[MySQL клиент 1] --> [MySQL сервер] <-- [MySQL клиент 2]

Все сущности на разных хостах.

"клиент 2" должен отловить событие вставки записи в таблицу TBL1, "клиентом 1".
Как это сделать средствами MySQL?

Повторюсь, в Firebird/Interbase есть специальный механизм, позволяющий в триггере вызвать событие, которое сработает у тех клиентов, которые это событие ждут.
Есть что-то подобное в MySQL?

Неактивен

 

#6 17.04.2018 12:33:45

ThreeDHead
Участник
Зарегистрирован: 17.04.2018
Сообщений: 5

Re: Существуют ли события в MySQL? (не шедулер!)

Выглядит это так:

В триггере вызываем событие: POST_EVENT 'MY_TABLE_UPDATE';

Создаём листенер (пример на PHP): $dbevent = ibase_set_event_handler($ibase, 'dbase_event_handler', 'MY_TABLE_UPDATE');

В dbase_event_handler($event_name, $ibase) произойдет событие, вызванное тем триггером вверху.

Неактивен

 

#7 19.04.2018 10:40:07

ThreeDHead
Участник
Зарегистрирован: 17.04.2018
Сообщений: 5

Re: Существуют ли события в MySQL? (не шедулер!)

Короче пришлось делать через анальный зонд - чтение бинарных логов

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson