当合并到Oracle 11gR2中的其他可更新视图时,我得到一个ORA-00903(USER_UPDATABLE_COLUMNS显示所有列可插入,可更新,可删除基础和视图)
标准插入,更新,正常删除所有工作。
文档: http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9016.htm#SQLRF01606 有以下内容:
使用INTO子句指定目标表或视图 更新或插入。为了将数据合并到视图中, 视图必须是可更新的。有关更多信息,请参阅“有关可更新视图的说明” 信息。
以下示例中似乎满足可更新视图条件,但ORA-00903在所有合并尝试中都存在。对替代触发器的更改似乎对合并性没有任何影响。
CREATE TABLE MERGE_TEST_B
(MERGE_TEST_ID NUMBER NOT NULL PRIMARY KEY,
MERGE_TEST_DESC VARCHAR2(50) UNIQUE NOT NULL);
CREATE OR REPLACE VIEW MERGE_TEST_V
AS
SELECT
MERGE_TEST_B.MERGE_TEST_ID,
MERGE_TEST_B.MERGE_TEST_DESC
FROM MERGE_TEST_B;
CREATE OR REPLACE TRIGGER MERGE_TEST_V_TIX
INSTEAD OF INSERT OR UPDATE OR DELETE ON MERGE_TEST_V
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('TESTING VIEW MERGE.');
END;
/
我想知道是否有可以使这种观点进入可合并状态的变化,或者这是不合格的。
以下尝试失败:
MERGE INTO MERGE_TEST_V
USING
(SELECT
'TESTMERGE' MERGE_TEST_DESC
FROM DUAL) TEST_DATA
ON (MERGE_TEST_V.MERGE_TEST_DESC = TEST_DATA.MERGE_TEST_DESC)
WHEN NOT MATCHED THEN INSERT
(MERGE_TEST_ID, MERGE_TEST_DESC)
VALUES
(-100, TEST_DATA.MERGE_TEST_DESC);
任何想法都将不胜感激。 感谢