-1

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

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

4

1 回答 1

0

约束的存在更具注释性,即一种让了解视图限制的机制。您将看到 CHECK OPTION 的约束类型“V”和 READ ONLY 的“O”。

但仍然是视图定义决定了视图上允许的内容。删除约束不会改变这一点 - 但它会失去(简单的)机制来查看视图上有哪些约束。没有它,现在你必须在视图定义的文本中挖掘才能解决它。

于 2021-01-18T08:10:04.313 回答