Sql Server: выполнить удаление для обновляемого представления с объединениями - PullRequest
0 голосов
/ 23 декабря 2009

В SQL можно запускать вставки и обновления для представления, если только представление выбирает данные только из одной таблицы. Однако удаление, похоже, не очень хорошо работает. Кто-нибудь может помочь?

Возьмите это представление, например:

CREATE VIEW v_MyUpdatableView
AS
    SELECT x.* FROM MyPrimaryTable x
    LEFT OUTER JOIN AnotherTable y ON y.MyPrimaryTableId = x.Id

Я могу запускать обновления и вставки для этого представления, и они с радостью переходят в MyPrimaryTable. Однако, если я запускаю удаление, я получаю следующее исключение:

Представление или функция v_MyUpdatableView не могут быть обновлены, поскольку модификация затрагивает несколько базовых таблиц.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2009

Цитата:

Операторы DELETE удаляют данные в одной или нескольких таблицах-членах через секционированное представление. Операторы DELETE должны придерживаться этого правила:

  • Операторы DELETE не допускаются, если есть самообъединение с тем же представлением или любой из таблиц-членов.

Правила изменения данных - создание секционированного представления

1 голос
/ 23 декабря 2009

Я бы просто создал хранимую процедуру, которая удаляла бы данные из двух таблиц. Я знаю, что это не красиво, но это будет работать или делать логические удаления, когда вы обновляете столбец, который будет «удален».

...