Задать вопрос
@TravushkaMuravushka

Почему не работает триггер?

Здравствуйте, проблема в том, что код отрабатывает (причем выполняется нужный селект), но по какой то причине ничего не вставляется в нужную таблицу - Plan.

CREATE TABLE Animals
(
Animals_Id INT PRIMARY KEY AUTO_INCREMENT,
PeriodPrivivka INT,
PeriodFeed INT
);
CREATE TABLE Plan 
(
Plan_Id INT PRIMARY KEY AUTO_INCREMENT,
Plan_Id_1 INT,
Dayy DATE,
Typee VARCHAR(20) NOT NULL,
FOREIGN KEY (Plan_Id_1) REFERENCES Animals (Animals_Id) 
);
CREATE TABLE LogBookManipulation
(
LogBookManipulation_Id INT PRIMARY KEY AUTO_INCREMENT,
Id INT,
NameFirstEmployees VARCHAR(30) NOT NULL,
NameSecondEmployees VARCHAR(30) NOT NULL,
DateE DATE,
ActionN VARCHAR(20) NOT NULL,
Count INT,
Typee VARCHAR(20) NOT NULL, # Insects ColdBloodedness Mammals/ snakes
TypeeFeed VARCHAR(20) NOT NULL, #конкретный тип насекомого/животного(еды)
FOREIGN KEY (Id) REFERENCES Animals (Animals_Id)
);


Как я поняла нужно указать везде название перед полями, но у меня эта таблица не имеет имени(тк собирается на месте).

DELIMITER // 
CREATE TRIGGER Planing_trigger 
AFTER INSERT ON LogBookManipulation
 FOR EACH ROW
 begin 
 IF new.Typee='Планирование' THEN
 INSERT INTO Plan (Plan_Id_1, Dayy, Typee )
SELECT (Animals_Id, now(), 'Кормление') FROM (Animals B LEFT JOIN (
 SELECT Id, min(DATEDIFF(now(),DateE)) AS Day FROM LogBookManipulation WHERE ActionN='Кормление' GROUP BY Id ) A ON B.Animals_Id= A.Id)
 WHERE (Day IS NOT NULL AND Day > PeriodFeed) OR (Day IS NULL);
END IF;
 END //


Пожалуйста помогите с решением проблемы! Заранее спасибо.
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
Вы бы лучше по номеру ошибки mysql поискали информацию в интернете. Вот решение вашей проблемы. Удалите лишние скобки в триггере и все будет добавляться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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