开发者

Sql Server: Execute delete against updateable view with joins

In SQL it is possible to run inserts and updates开发者_如何学编程 against a view, as long as the view only selects data from one table. However, deletes don't seem to work quite so well. Can anyone help out?

Take this view for example:

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

I can run updates and inserts against this view and they happily pass through to MyPrimaryTable. However, if I run a delete I receive the following exception:

View or function 'v_MyUpdatableView' is not updatable because the modification affects multiple base tables.


Quote:

DELETE statements remove data in one or more of the member tables through the partitioned view. The DELETE statements must adhere to this rule:

  • DELETE statements are not allowed if there is a self-join with the same view, or any of the member tables.

Data Modification Rules - Creating a Partitioned View


I would just create a stored procedure that would delete the data from two tables. I know it's not pretty, but it would work or do logical deletes, where you update a column to be "deleted".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜