Я хотел бы автоматически генерировать скрипт обновления каждый раз, когда значение изменяется в моей базе данных. Другими словами, если хранимая процедура или запрос обновляет столбец a со значением b в таблице c (который является столбцом pk (i, j ... k), я хочу сгенерировать это:
update c set a=b where i=... and j=... and k=...
и сохраните его где-нибудь (например, в виде необработанной строки в таблице). Чтобы усложнить ситуацию, я хочу, чтобы сценарий создавался только в том случае, если обновление было выполнено конкретным пользователем.
Хорошей новостью является то, что у меня есть первичный ключ, определенный для всех моих таблиц.
Я вижу, как это сделать, используя триггер, но мне нужно было бы генерировать конкретные триггеры для каждой таблицы и обновлять их каждый раз, когда моя схема изменяется.
Я полагаю, что есть некоторые встроенные способы сделать это, так как SQL-серверу иногда требуется хранить подобные вещи (например, с использованием репликации транзакций), но пока не смог найти ничего ... есть идеи?
Меня также интересуют способы автоматической генерации триггеров (возможно, с использованием триггеров - мета-триггеров, да? - поскольку мне нужно будет автоматически обновлять триггеры при изменении схемы)
Вот почему я хочу это сделать. У меня есть производственная база данных A и база данных хранилища данных B. Я использую транзакционную репликацию для синхронизации баз данных. Мне нужно иметь возможность обновлять некоторые значения в хранилище данных без обновления производственной базы данных. Это прекрасно работает с репликацией транзакций, но поднимает две проблемы, которые приводят к вышеуказанному вопросу:
- Как отслеживать изменения, внесенные мной вручную? (Я планирую контролировать исходный код сгенерированного скрипта.)
- Как мне восстановить эту базу данных, если это необходимо, поскольку создание нового снимка приведет к потере всех моих обновлений? (применение автоматически сгенерированного скрипта решает проблему)