Прежде всего, таблица CustomerHistory
, вероятно, должна также содержать CustomerId
, чтобы запись истории можно было отследить до нужного клиента.
Вам понадобятся два триггера: один наCustomerAccountManagers
и один на Customers
.Если вы можете гарантировать порядок, в котором они выполняются, это нормально: первый триггер будет вставлен, второй обновит запись истории.
Если вы не можете гарантировать порядок, все усложняется, так как каждый триггер должен будет: 1) попытаться вставить новую запись, и в случае неудачи 2) обновить существующую.Вы должны были бы защитить себя от прерывистой вставки с помощью другого триггера, и это, вероятно, означает выполнение транзакции с сериализуемым уровнем изоляции (блокировка всей таблицы).Это подвержено тупикам, поэтому лучше использовать две таблицы истории, как уже предлагали другие.