Первый вариант может быть более надежным, потому что база данных будет поддерживать поле. Это связано с возможными накладными расходами на использование триггеров.
Если бы в будущем вы могли записывать в эту таблицу другие приложения через свои собственные интерфейсы, я бы использовал триггер, чтобы вы больше нигде не повторяли эту логику.
Если ваше приложение в значительной степени похоже на это, или любое другое приложение получит доступ к базе данных через один и тот же слой данных, то я бы избежал этого кошмара, который триггеры могут вызывать и помещать логику прямо в ваш слой данных (SQL, ORM, хранимые процессы , так далее.).
Конечно, вам нужно убедиться, что ваш источник времени (ваше приложение, компьютеры ваших пользователей, ваш сервер SQL) точен в любом случае.
Относительно того, почему я не люблю триггеры:
Возможно, я был опрометчив, называя их кошмаром. Как и все остальное, они уместны в меру. Если вы используете их для очень простых вещей, как это, я мог бы попасть на борт.
Именно когда код триггера становится сложным (и дорогим), триггеры начинают вызывать множество проблем. Они являются скрытым налогом на каждый выполняемый вами запрос вставки / обновления / удаления (в зависимости от типа триггера). Если этот налог приемлем, то они могут быть подходящим инструментом для работы.