在SQL中,只要视图仅从一个表中选择数据,就可以对视图运行插入和更新。但是,删除似乎并不是那么好用。任何人都可以帮忙吗?
以此视图为例:
CREATE VIEW v_MyUpdatableView
AS
SELECT x.* FROM MyPrimaryTable x
LEFT OUTER JOIN AnotherTable y ON y.MyPrimaryTableId = x.Id
我可以对这个视图运行更新和插入,他们很高兴地传递给MyPrimaryTable。 但是,如果我运行删除,则会收到以下异常:
视图或函数'v_MyUpdatableView'不可更新,因为修改会影响多个基表。
答案 0 :(得分:2)
引用:
DELETE语句通过分区视图删除一个或多个成员表中的数据。 DELETE语句必须遵守此规则:
- 如果存在具有相同视图或任何成员表的自联接,则不允许使用DELETE语句。
答案 1 :(得分:1)
我只想创建一个存储过程来删除两个表中的数据。我知道它不漂亮,但它可以工作或进行逻辑删除,您可以将列更新为“已删除”。