sql - 我正在从视图中删除带有检查选项的约束,但它没有被强制执行
问题描述
所以我陷入了一个问题。我用 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.
我不知道为什么会这样,因为我已经放弃了约束。
解决方案
约束的存在更具注释性,即一种让你了解视图限制的机制。您将看到 CHECK OPTION 的约束类型“V”和 READ ONLY 的“O”。
但仍然是视图定义决定了视图上允许的内容。删除约束不会改变这一点 - 但它会失去(简单的)机制来查看视图上有哪些约束。没有它,现在你必须在视图定义的文本中挖掘才能解决它。
推荐阅读
- firebase - 如何设置强大的 Firebase 规则
- google-cloud-platform - 如何使用 Cloud Billing Budget API 创建启用通知渠道的预算
- c# - 如何从 ASP.NET MVC 中的表中获取每个值?
- python - 范围函数不起作用(语法无效)
- javascript - Bootstrap Vue 如何获取卡片的高度
- json - 多个 map[string] 接口并将它们映射到多个 json 文件 GOLANG
- parameters - 如何在 Jmeter 参数中保留换行符和空格
- django - /updateprofile 处的 RelatedObjectDoesNotExist 用户没有个人资料
- python - 二分搜索:如果是平局,则返回较低的值
- laravel - Laravel Vuejs 表单构建器