合併時,我得到一個ORA-00903合併到Oracle 11gR2中否則可更新視圖時(USER_UPDATABLE_COLUMNS顯示所有列插入,更新,刪除的對基地和視圖)ORA-00903的可更新視圖
標準插入,更新,正常刪除所有工作。
文檔: 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);
任何想法,將不勝感激。 謝謝
果然,沒有觸發器運行良好。謝謝 – alexgibbs 2014-10-31 01:02:59