Защо просто не създадете изглед и не изчислите състоянието. След това използвайте изгледа вместо таблицата:
CREATE VIEW vwSubscription
AS
SELECT
start_date,
end_date,
IF(end_date > curdate, 'inactive', status) as status
FROM subscription