Вот мой спусковой крючок.Триггер не работает все время
CREATE TRIGGER `data_temp_after_insert` AFTER INSERT ON `data_temp`
FOR EACH ROW
BEGIN
DECLARE nextInc INT DEFAULT 0; // I have try to define AS a varchar...
DECLARE idrad varchar(75);
DECLARE idio_bat varchar(75);
DECLARE UniqueID varchar(75);
DECLARE ServerID varchar(75);
SELECT IDRadio INTO idrad FROM radio WHERE radio.XB_SL=NEW.XB_SL AND Actif=1 LIMIT 1;
SELECT ID_IO INTO idio_bat FROM io WHERE io.IDRadio=idrad AND NoIO=1 AND Actif=1 LIMIT 1;
SELECT IDServerInfo INTO ServerID FROM serverinfo WHERE Actif=1;
SELECT AUTO_INCREMENT INTO nextInc FROM information_schema.tables WHERE table_name = 'io_data' AND table_schema = DATABASE() ;
SET UniqueID = CONCAT(ServerID,'-',nextInc);
IF NEW.Battery IS NOT NULL AND idio_bat IS NOT NULL AND idio_bat != 0 THEN
UPDATE io_data SET ValueRead=1, DateModification=now() WHERE ID_IO=idio_bat AND ValueRead=0 AND Actif=1;
INSERT INTO io_data (ID_IO_Data, ID_IO, ReadingValue, Timestamp)
VALUES (UniqueID, idio_bat, NEW.Battery, NEW.Timestamp);
END IF;
END
Вот вставка запроса в data_temp (на котором установлен триггер)
INSERT INTO data_temp (XB_SL, HType, Battery, Temperature, Value_1, Value_2, Value_3) VALUES ('1086507849', '2', 22, -23, -0.9, -4.6, -4.9);
Вот io_data структура таблицы:
ID_IO_Data varchar(75)
No int AUTO_INCREMENT
ID_IO varchar(75)
ReadingValue decimal(5,2)
Timestamp timestamp CURRENT_TIMESTAMP
ValueRead int
У меня 2 Differents ситуации.
Тот, который работает: (обновление в io_data, а также вставка)
IDServerInfo (определено как 75 VarChar) является значением 230000-A8754126-8B0D-4D68-A20A-7F97EDE1CE43
Итак, каждый созданный идентификатор использует этот IDServerInfo, объединенный с автоинкрементами для таблицы (определите как varchar 75).
При заполнении данных в таблице data_temp с этим IDServerInfo все работает хорошо.
Путь, который не работает:.
Единственное различие в настройках, что IDServerInfo содержит букву первого символа (например Z 23000-A8754126-8B0D-4D68-A20A- 7F97EDE1CE43) (Я пробовал Z 230000-A8754126-8B0D-4D68-A20A-7F97EDE1CE43 и не работает тоже)
Любой человек может помочь? У вас достаточно информации, чтобы понять, что я делаю неправильно?
UPDATE
Я попытался с несколькими различными IDServerInfo
Все эти один не работают
Z230000-
Z23000-
ZZZZZZZ-
ZZZ111-
A123456-
Те одна работа!
230000Z
1ZZZZZZ
111ZZZ
Таким образом, если первый символ является буквой, она не работает!