Sql Server:对具有联接的可更新视图执行删除
在SQL中,只要视图只从一个表中选择数据,就可以对视图运行插入和更新。然而,删除似乎不太好用。有人能帮忙吗 以这一观点为例:Sql Server:对具有联接的可更新视图执行删除,sql,sql-server,views,Sql,Sql Server,Views,在SQL中,只要视图只从一个表中选择数据,就可以对视图运行插入和更新。然而,删除似乎不太好用。有人能帮忙吗 以这一观点为例: CREATE VIEW v_MyUpdatableView AS SELECT x.* FROM MyPrimaryTable x LEFT OUTER JOIN AnotherTable y ON y.MyPrimaryTableId = x.Id 我可以对这个视图运行更新和插入,它们很高兴地传递到MyPrimaryTable。 但是,如果我运行删除,
CREATE VIEW v_MyUpdatableView
AS
SELECT x.* FROM MyPrimaryTable x
LEFT OUTER JOIN AnotherTable y ON y.MyPrimaryTableId = x.Id
我可以对这个视图运行更新和插入,它们很高兴地传递到MyPrimaryTable。
但是,如果我运行删除,我会收到以下异常:
视图或函数“v_myupdateableview”不可更新,因为修改会影响多个基表
我只需要创建一个存储过程,从两个表中删除数据。我知道这不太好,但它可以工作或执行逻辑删除,您可以将列更新为“已删除”。我只需要创建一个存储过程,从两个表中删除数据。我知道它不漂亮,但它可以工作或进行逻辑删除,您可以将列更新为“已删除”。Quote: DELETE语句通过分区视图删除一个或多个成员表中的数据。删除语句必须遵守以下规则:
- 如果存在具有相同视图或任何成员表的自联接,则不允许使用DELETE语句
- 如果存在具有相同视图或任何成员表的自联接,则不允许使用DELETE语句