SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 18.09.2009 09:51:24

DDN
Участник
Зарегистрирован: 18.09.2009
Сообщений: 2

Триггер в MySQL

Сервер БД - MySQL 5.0.45
Имеем две таблицы:
tank42_din_value
tank42_din_last

на таблице tank42_din_value сделан триггер tr_Tank42_DIN_VALUE_Insert , который выполняется After Insert (после добавления).
BEGIN
update Tank42_DIN_LAST set DateAndTime=new.DateAndTime, Val=new.Val, Status=new.Status, Marker=new.Marker
where new.Status ='' and new.TagIndex=Tank42_DIN_LAST.TagIndex
and (new.Marker = '' or new.Marker = 'C')
and (new.Val<>Tank42_DIN_LAST.Val);
END

Каким-то образом обновляются значения в таблице tank42_din_last (появляется новая дата 2009-09-17 17:06:36), хотя в таблицу tank42_din_value ничего не записалось (дата последней записи - 2009-06-21 11:23:12).

Из таблицы tank42_din_last пользователи только читают данные. (Попробую запретить доступ на изменение.)

Все прекрасно работало на MSSQL 2005.

Неактивен

 

#2 18.09.2009 12:50:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Триггер в MySQL

Вижу два штатных способа, как это могло произойти:
1. Обновить табличку last можно не только триггером.
2. В табличку value можно вставить строки со старой датой или даже просто обновить
строки в value на старую дату.

Попробуйте поискать в бинарных логах — наверняка там будет информация о том, каким
образом поменялись строки.

--
Видимо, MSSQL Вас чем-то не устроил, раз Вы мигрировали на MySQL? smile

Неактивен

 

#3 18.09.2009 16:37:34

DDN
Участник
Зарегистрирован: 18.09.2009
Сообщений: 2

Re: Триггер в MySQL

paulus написал:

Вижу два штатных способа, как это могло произойти:
1. Обновить табличку last можно не только триггером.

В том то и дело таблицы LAST открыты пользователям только на select.

paulus написал:

2. В табличку value можно вставить строки со старой датой или даже просто обновить
строки в value на старую дату.

Таблицы Value - это исторический архив, туда только пишутся текушие на данный момент данные ничего не стирается.  Последняя запись была давно (в июне).

paulus написал:

Попробуйте поискать в бинарных логах — наверняка там будет информация о том, каким
образом поменялись строки.

Только перешел на MySQL, подскажите ссылку где прчитать про просмотр бинарных логов.

paulus написал:

Видимо, MSSQL Вас чем-то не устроил, раз Вы мигрировали на MySQL? smile

Планируется перевод сервера на Linux, нет ограничения в бесплатной версии в 1.5 Гб.

Неактивен

 

#4 18.09.2009 16:46:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Триггер в MySQL

Ну, другой пользователь тоже мог поменять...

mysqlbinlog mysql-bin.001 | less
ну, разумеется, надо подставить правильное название файлика с журналом.

Если только переходите — убедитесь, что система 64 бита, чтобы не упереться в ограничение
3Гб на процесс.

Неактивен

 

Board footer

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