sbh
@sbh

Как с помощью триггера не вставлять запись а обновлять старую?

Необходимо с помощью триггера BEFORE INSERT проверять есть ли запись с определенными параметрами и если она есть то не вставлять новую запись а обновлять найденную.

Вот набросал триггер:
SET @myVar1 = (SELECT `SESSION_START` from `radius` where `SESSION_START` = NEW.SESSION_START and `LOGIN_ID` = new.LOGIN_ID);
IF(@myVar1 IS NULL) THEN 
BEGIN
Insert into `radius`(`LOGIN_ID`, `IP`, `SESSION_ID`, `SESSION_START`, `SESSION_TIMESTAMP`) values (new.LOGIN_ID, new.IP, new.SESSION_ID, new.SESSION_START, new.SESSION_TIMESTAMP);
END;
ELSE
UPDATE `radius` SET `SESSION_TIMESTAMP` = new.SESSION_TIMESTAMP WHERE `SESSION_START` = new.SESSION_START;
END IF;


При вставке данных выдает ошибку
Can't update table 'radius' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
@MaximaXXl
Посмотрете в сторону
INSERT INTO
ON DUPLICATE KEY UPDATE
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы