Триггеры не следует избегать везде, где это возможно.Их следует использовать по своему усмотрению.
Во-первых, во многих системах, с которыми я работал, все операции DML встроены в хранимые процедуры.По сути, все, что может сделать триггер, - это хранимая процедура - наряду с другими функциями, такими как ведение журнала.
Во-вторых, если у вас есть проблема, требующая триггера, используйте триггер.Например, до Oracle 12C вам требовался триггер для добавления первичного ключа с автоинкрементом.Обязательно делайте это, если это то, что вам нужно.
Не переусердствуйте.Но ваша конкретная проблема выглядит как пример, где триггер может быть весьма полезным.
Поймите, что могут быть и другие решения.Например, возможно, представление будет делать то, что вы хотите:
create view v_t as
select t.*
from t
where col1 is not null or col2 is not null or . . .;
Это сохранит все накладные расходы триггера.Если таблица становится слишком большой, вы можете удалить все строки NULL
, используя запланированное задание.