Если вы используете MS SQL, идеальным ответом, вероятно, будет вычисляемый столбец .
Чем меньше данных вы на самом деле дублируете, тем меньше у вас будет возможностей для несогласованности данных, и, следовательно, из-за этой схемы будет меньше кода обеспечения / проверки согласованности и меньше процессов обслуживания.
Чтобы настроить это (опять же, если используется MS SQL), просто добавьте еще один столбец с помощью конструктора и разверните область «Спецификация вычисляемого столбца». (Вы можете ссылаться на другие столбцы из этой же таблицы для этого расчета.) Затем введите «End_Time - Start_Time». В зависимости от того, что вы собираетесь делать с этими данными, вы можете вместо этого использовать что-то вроде DATEDIFF (minute, Start_Time, End_Time) для своей формулы. Это именно то, для чего предназначена эта функция.
Если это очень дорогой расчет (который, вероятно, не ваш, исходя из предоставленной вами информации), вы можете настроить результаты так, чтобы они были «постоянными» - это очень похоже на триггер, но более понятный для реализации и поддержки.
Кроме того, вы можете создать новое представление, которое выполняет те же вычисления, и "проецировать" эту первую таблицу через нее при получении информации. Но вы, вероятно, уже знали это, таким образом, этот ответ родился! :)
p.s. Я лично рекомендую избегать триггеров, таких как чума. Они вызывают дополнительные операции, которые часто не ожидаются разработчиком, сопровождающим или администратором. Это может привести к сбою операций, возврату неожиданных дополнительных наборов результатов или изменению строк, которые, возможно, администратор специально пытался избежать изменения во время административного исправления (читай: не поддерживается ухмылка ).
p.p.s. В этом случае я бы также рекомендовал против хранимой процедуры по той же причине обслуживания, что и триггеры. Хотя вы можете ограничить безопасность таким образом, чтобы единственный способ обновить таблицу был через хранимую процедуру, это может не сработать по многим из тех же причин, по которым триггеры могут не работать. Лучше всего избегать дублирования данных, если можете.
p.p.p.s :) Нельзя сказать, что хранимые процедуры в целом плохие. При сложных транзакционных операциях или тесно интегрированной процедурной фильтрации больших связанных таблиц, чтобы вернуть сравнительно небольшой набор результатов, они все еще часто являются лучшим выбором.