UPDATE orders
SET orderdate='2020-01-01';
CREATE VIEW ViewCust1(custkey,name,totalprice,totalquantity) AS SELECT
customer.custkey,
customer. NAME,
SUM(totalprice),
SUM(quantity)
FROM
customer,
orders,
lineitem
WHERE
customer.custkey = orders.custkey
AND orders.orderkey = lineitem.orderkey
AND orderdate LIKE '2020%'
GROUP BY
customer.custkey,customer.`name`
WITH CHECK OPTION;
以上是建立视图时的代码,带有with check option,结果报错
删去with check option能够正常执行
搜了一下发现竟然没有关于这个报错的解释,下面是我的思考:
1.带有with check option,那么就会在以后修改或插入数据时每次都检查where里的条件
例如我这里建立该视图,视图中只含有四列,要检查where里的条件customer.custkey = orders.custkey AND orders.orderkey = lineitem.orderkey AND orderdate LIKE '2020%'
都在这个视图的结构中是不存在的
当修改或插入数据时,插入的数据和该视图的结构保持一致,自然也是不存在where里的条件的,所以自然也就会报错了。
2.含有group by的视图无法更新。