我正在从视图中删除 with check 选项约束,但它没有被强制执行
Posted
技术标签:
【中文标题】我正在从视图中删除 with check 选项约束,但它没有被强制执行【英文标题】:I am dropping the with check option constraint from view but it is not being enforced 【发布时间】:2021-01-14 21:32:05 【问题描述】:所以我陷入了一个问题。我用 WITH CHECK OPTION 约束定义了一个视图,现在我想删除它,但即使在删除约束后我得到错误:=ora-01402: view WITH CHECK OPTION where- clause violation.
这是我正在执行的 SQL 命令序列-
$>>CREATE VIEW CHEAP_PRODUCTS AS SELECT * FROM PRODUCTS WHERE PRICE<15 WITH CHECK OPTION CONSTRAINT CHECK_OP;
modified
$>>ALTER VIEW CHEAP_PRODUCTS DROP CONSTRAINT CHECK_OP;
view altered
$>> INSERT INTO CHEAP_PRODUCTS(PRODUCT_ID,PRODUCT_TYPE_ID,NAME,PRICE) VALUES (50,1,'EASTERN FRONT',88);
ora-01402: view WITH CHECK OPTION where- clause violation.
我不知道为什么会这样,因为我已经放弃了约束。
【问题讨论】:
【参考方案1】:约束的存在更多的是注释性,也就是让你知道对视图的限制的机制。您将看到 CHECK OPTION 的约束类型“V”和 READ ONLY 的“O”。
但仍然是视图定义决定视图上允许的内容。删除约束不会改变这一点 - 但它会失去(简单的)机制来查看视图上有哪些约束。没有它,现在您必须在视图定义的文本中挖掘才能解决问题。
【讨论】:
以上是关于我正在从视图中删除 with check 选项约束,但它没有被强制执行的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 从 UICollectionViewCell 内的视图中删除约束
ORA-00922:修改视图时缺少或无效选项 - Oracle [重复]
Swift:removefromSuperview 移除约束