Qairat
@Qairat
frontend developer, angular 2+

Как правильней создать триггер в MySql?

Всем привет!
Есть таблицы Departments(id, width, height),
Objects(id, width, height),
HistoryChanges(id, table_name, c_id, c_width, c_heigth, date).
Сделал триггер BEFORE UPDATE для таблицы Departments
Там короче при обновлении Departments,
срабатывает триггер и записывает старые значение width, height в таблицу HistoryChange.
BEGIN
  INSERT INTO HistoryChange Set c_width= OLD.width, c_height = OLD.height;
END

Теперь не могу туда передать для столбец table_name, c_id данные. Имя таблицы, и id строки который изменил.
Написал код так, но неправильно:
INSERT INTO HistoryChange Set table_name = 'Departmensts', c_id = 'Даже не знаю что написать ', c_width= OLD.width, c_height = OLD.height;

Как реализовать правильней?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
Qairat
@Qairat Автор вопроса
frontend developer, angular 2+
Все сделал)
BEGIN
DECLARE t_name varchar(256);
SET t_name = "MDepartments";
INSERT INTO HistoryChange Set table_name = t_name, c_id= OLD.id, c_width = OLD.width, height = OLD.height;
END
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А смысл что-то передавать для `table_name`? Триггер то висит на конкретной таблице, так что значение всегда будет одно и то же, можно использовать константу.
Ответ написан
Ваш ответ на вопрос

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

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