我正在从视图中删除 with check option 约束,但它没有被强制执行

I am dropping the with check option constraint from view but it is not being enforced

所以我陷入了一个问题。我用 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.

我不明白为什么会这样,因为我已经放弃了约束。

约束的存在更多的是annotative,也就是一种让知道view上的限制的机制。您将看到 CHECK OPTION 的约束类型“V”和 READ ONLY 的“O”。

但是视图 定义 仍然决定视图上允许的内容。删除约束不会改变这一点 - 但它会失去(简单的)机制来查看视图上的约束。没有它,现在您必须深入研究视图定义的文本才能解决问题。