В MariaDB, когда вы создаете триггер BEFORE UPDATE, вы имеете возможность изменить значения столбцов, которые будут обновлены, путем присвоения новых значелений переменным `NEW.column_name`. Манипуляции с этими переменными напрямую влияют на данные, которые будут записаны в базу данных после выполнения триггера.
Если значения `NEW` не сохраняются, возможны следующие причины:
1. Присваивание значений происходит некорректно.
2. В теле триггера возникает ошибка, из-за которой он завершается раньше времени.
3. Триггер перезаписывается другим триггером или операциями, выполняемыми после BEFORE UPDATE.
Чтобы исправить значение переменной `NEW.object_id`, вам нужно написать такую строку в теле триггера BEFORE UPDATE:
```sql
SET NEW.object_id = новое_значение;
```
где `новое_значение` - это значение, которое вы хотите присвоить `object_id` перед обновлением строки.
Вот пример триггера, который изменяет значение в колонке `object_id` перед тем, как обновление произойдет:
```sql
CREATE TRIGGER before_update_trigger
BEFORE UPDATE ON ваша_таблица
FOR EACH ROW
BEGIN
-- Здесь могут быть различные проверки или расчеты
SET NEW.object_id = новое_значение;
-- Переменная NEW.object_id теперь содержит новое значение,
-- которое будет вставлено в объект во время обновления
END;
```
Если вы сталкиваетесь с тем, что при выводе отладочной информации значения `NEW.column_name` выглядят некорректно, возможные причины могут быть следующие:
- Вывести значения переменных `NEW.column_name` напрямую в MariaDB невозможно, так как MariaDB не предоставляет встроенных процедур для отладки триггеров, наподобие `DBMS_OUTPUT.PUT_LINE` в Oracle. Чтобы визуализировать эти значения, вы можете использовать временную таблицу для записи отладочной информации.
- Значения переменных `NEW.column_name` изменяются в другом месте в рамках того же триггера, и вы выводите не те значения, которые ожидали.
Убедитесь, что вы не столкнулись с логической ошибкой в коде триггера и что обновление значений переменных производится в правильном порядке.