SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 23.12.2013 19:09:07

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

Не срабатывает ни один триггер

Доброго времени суток.
Есть таблица EventData
c полями deviceID varchar(32)
             timestamp int(10)
и много других
Данные в таблицу записываются через файл вроде как на java, вот код в нём:

<entry key='database.driver'>com.mysql.jdbc.Driver</entry>
    <entry key='database.url'>jdbc:mysql://localhost:3306/[DATABASE]?allowMultiQueries=true</entry>
    <entry key='database.user'>[USER]</entry>
    <entry key='database.password'>[PASSWORD]</entry>

    <entry key='database.selectDevice'>
        SELECT imeiNumber AS id, imeiNumber AS imei FROM Device WHERE imeiNumber &lt;&gt; '';
    </entry>

    <entry key='database.insertPosition'>
        START TRANSACTION;
            UPDATE Device SET lastValidLatitude = :latitude, lastValidLongitude = :longitude, lastGPSTimestamp = UNIX_TIMESTAMP(:time), lastUpdateTime = UNIX_TIMESTAMP(NOW()) WHERE imeiNumber = :device_id;
            SELECT @accountID := accountID, @deviceID := deviceID FROM Device WHERE imeiNumber = :device_id;
            INSERT INTO EventData (accountID, deviceID, timestamp, statusCode, latitude, longitude, speedKPH, heading, altitude, rawData, creationTime, address)
            VALUES (@accountID, @deviceID, UNIX_TIMESTAMP(:time), 0, :latitude, :longitude, :speed, :course, :altitude, '', UNIX_TIMESTAMP(NOW()), :address);


Проблема в том что не работает ни один триггер даже самый простейший

CREATE TRIGGER test AFTER INSERT ON EventData FOR EACH ROW SET @sum=@sum+1;


Если я добавляю данные вручную через консоль командой INSERT то триггер работает
sum считает колличество добавлений, а вот когда данные поступают через файл то sum так и остаётся 0

Пробывал в триггер вставлять DEFINER=root@localhost не помогло.

Подскажите кто знает в какую сторону хоть копать.

Неактивен

 

#2 23.12.2013 20:42:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Не срабатывает ни один триггер

Триггер срабатывает, просто @sum живет в течении сессии.

Неактивен

 

#3 24.12.2013 12:13:54

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

Re: Не срабатывает ни один триггер

Правильно ли я понимаю почему не работает триггер?

Добавление в таблицу осуществляется транзакцией, и триггер не видит INSERT и UPDATE которые прописаны внутри транзакции, поэтому не срабатывает на их действие.

Неактивен

 

#4 24.12.2013 13:42:11

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Не срабатывает ни один триггер

Триггер срабатывает, но присвоенное им значение переменной теряется, так как переменная прекращает существование после завершения сессии. Придумайте другой способ подсчет - например, update к сторонней таблице.

Неактивен

 

Board footer

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