Триггер MySQL не работает для обновления таблицы при удалении из другой таблицы. Как это исправить? - PullRequest
0 голосов
/ 19 апреля 2020

Я создаю эти две таблицы

CREATE TABLE Locais ( IdLocal int(5) NOT NULL, NomeLocl varchar(50) NOT NULL,
PRIMARY KEY (IdLocal) );

CREATE TABLE Missoes ( IdMissao int(5) NOT NULL, NomeMis varchar(50) NOT NULL,
IdLocalMis int(5) NULL, QtdEscaladosMis int(5) NULL, PRIMARY KEY (IdMissao) );

И мне нужно обновить значение Missoes.IdLocalMis до 999, чтобы удалить строку Locais, используя в качестве ссылки Locais.IdLocais.

Я создаю этот триггер

DELIMITER $

CREATE TRIGGER Tgr_tarefa_1  BEFORE DELETE

ON Locais FOR EACH ROW

BEGIN
    UPDATE Missoes SET IdLocalMis = 99 WHERE IdLocalMis = OLD.IdLocal;
END$

DELIMITER ;

И я пытаюсь удалить одну строку в Locais, это сообщение появляется:

Operation failed: There was an error while applying the SQL script to the database.
Executing:
DELETE FROM `trabalho_bd_2`.`Locais` WHERE (`IdLocal` = '5');

ERROR 1175: 1175: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. 
SQL Statement:
DELETE FROM `trabalho_bd_2`.`Locais` WHERE (`IdLocal` = '5')

Что такое goin go on?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...