#mysql #triggers
#mysql #триггеры
Вопрос:
У меня есть две таблицы.
Таблица DOG
|-----------------------|
| ID | NAME | STATUS_ID |
|-----------------------|
| 1 | Tom | 1 |
|-----------------------|
Таблица ПРИЛОЖЕНИЙ
|---------------------------|
| ID | DOG_ID | IS_RETURNED |
|---------------------------|
| 1 | 1 | 0 |
|---------------------------|
И у меня есть таблица просмотра
select A.ID, B.ID DOG_ID, B.NAME, A.IS_RETURNED
FROM DOG A
INNER JOIN APPLICATION B
ON A.ID = B.DOG_ID
Когда я пытаюсь обновить IS_RETURNED до 1, (обновить набор view_table IS_RETURNED = 1, где DOG_ID = 1) Я получаю ошибку «Не удается обновить таблицу ‘DOG’ в сохраненной функции / триггере, потому что она уже используется оператором, который вызвал эту сохраненную функцию / триггер».
Триггеры
CREATE TRIGGER `AFTER_UPDATE_DOG` AFTER UPDATE ON `DOG`
FOR EACH ROW BEGIN
IF NEW.STATUS_ID <> OLD.STATUS_ID AND NEW.STATUS_ID = 2 THEN
INSERT INTO APPLICATION (DOG_ID, PAYMENT_STATUS_ID, CREATED_DATE) VALUES (NEW.ID, 2, SYSDATE());
END IF;
IF NEW.STATUS_ID <> OLD.STATUS_ID AND NEW.STATUS_ID = 1 THEN
INSERT INTO APPLICATION (DOG_ID, IS_FINALISED, CREATED_DATE) VALUES (NEW.ID, 1, SYSDATE());
END IF;
END
CREATE TRIGGER `AFTER_INSERT_DOG` AFTER INSERT ON `DOG`
FOR EACH ROW UPDATE DOG SET AGE = NEW.ID WHERE ID = NEW.ID
CREATE TRIGGER `AFTER_UPDATE_APPLICATION` AFTER UPDATE ON `APPLICATION`
FOR EACH ROW BEGIN
IF NEW.IS_RETURNED <> OLD.IS_RETURNED AND NEW.IS_RETURNED = 'Yes' THEN
UPDATE DOG SET STATUS_ID = 3 WHERE ID = NEW.DOG_ID;
END IF;
END
Какой триггер вызывает ошибку? Я пытаюсь решить проблему. Любая помощь приветствуется.
Комментарии:
1. Какой запрос вы запускаете, чтобы обновить IS_RETURNED до 1 , т. Е. какой запрос генерирует ошибку?
2. У меня есть представление, которое объединяет таблицу DOG и таблицу Application. и «Обновить набор View_table IS_RETURNED = 1, где DOG_ID = 1
3. Что, если вы обновите
Application
таблицу напрямую, вы получите ту же ошибку?UPDATE application SET IS_RETURNED = 1 where DOG_ID = 1
4. Нет, я не получаю никакой ошибки. но мне нужно обновить view table. Я создаю таблицу на WordPress и использую плагин wpDataTable. Мне нужно использовать view table, чтобы глобальный поиск работал в wpDataTable (глобальный поиск не работает в запросах объединения)
5. Вы пытались просто
UPDATE application ...
, а затем посмотреть, отражаются ли изменения в представлении? Это может просто сработать.