Как сделать так, чтобы SQLDataSource вставлялся в представление вместо базовой таблицы?

Мы заменили 20 таблиц консолидированной таблицей, которая разделяет каждый набор данных с помощью "идентификатора набора" (все записи для таблицы "A" имеют set_id, равный 1, таблица "B", равная 2, и т. Д.).

Затем мы построили представления на таблице и переименовали каждое из них, чтобы у них были те же имена, что и у исходных 20 таблиц, с WHERE для добавления set_id. Чистый результат - вставки / обновления / выборки просмотров все еще работают

Мы сделали это так, чтобы наша веб-страница, использующая sqldatasource с "sql command builder", не должна была изменяться. Мы добавили триггер INSTEAD OF INSERT для каждого представления, поэтому при вставке в представление он добавляет set_id и вставляет в консолидированную таблицу. Все идет нормально.

Это частично работает: работают ОБНОВЛЕНИЯ и УДАЛЕНИЯ, потому что они знают фактический идентификатор записи.

Однако INSERT не делает - когда команда фактически выполняется, мы видим "вставку exec sp_executesql в консолидированную таблицу" - вместо того, чтобы попасть в представление, элемент управления источником данных находит базовую таблицу, а затем вставляет ее непосредственно в нее. Если мы попытаемся добавить поля в представления, они затем отобразятся в элементе управления источником данных, но на веб-странице появится настраиваемое поле.

Есть ли способ изменить вещи на стороне базы данных, чтобы заставить ее использовать представление? Мой единственный другой вариант на этом этапе - заменить представления таблицами, добавить триггер AFTER INSERT, UPDATE, DELETE, чтобы сводная информация обновлялась, а затем процесс, чтобы убедиться, что они синхронизированы и проблем нет.

Спасибо заранее.

0 ответов

Другие вопросы по тегам