CREATE MATERIALIZED VIEW ORDERS_MV
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND AS
SELECT * FROM ORDERS;
---------------------------------------
CREATE OR REPLACE TRIGGER update_ship_receive
INSTEAD OF INSERT ON ORDERS_MV
FOR EACH ROW
BEGIN
UPDATE ORDERS SET EXPECTED_SHIP_DATE = ORDER_DATE+5;
UPDATE ORDERS SET EXPECTED_RECEIVE_DATE = SHIP_DATE+1
WHERE SHIPPING_METHOD = '1 DAY';
UPDATE ORDERS SET EXPECTED_RECEIVE_DATE = SHIP_DATE+2
WHERE SHIPPING_METHOD = '2 DAY';
UPDATE ORDERS SET EXPECTED_RECEIVE_DATE = SHIP_DATE+5
WHERE SHIPPING_METHOD = 'GROUND';
END;
/
-3
A
回答
4
Oracle可以看到您的表結構。我們不能。我打賭甲骨文在你的代碼中看到了這個問題。
它應該指向錯誤的第一行。如果沒有,請從user_errors中選擇*;
也許你的ORDERS表沒有SHIP_DATE(因爲第一條語句談到了EXPECTED_SHIP_DATE)。
+0
我創建了物化視圖,當我嘗試創建INSTEAD OF觸發器時,它說:「無法在表上創建INSTEAD OF觸發器」。這很奇怪。 – indolent
3
不是Oracle的傢伙,但你不應該使用
:OLD.SHIP_DATE
或
:NEW.SHIP_DATE
和
:OLD.ORDER_DATE
或
:NEW.ORDER_DATE
1
對不起,爲什麼不在訂單表上創建o BEFORE INSERT觸發器?當創建BEFORE INSERT觸發器時,如果在訂單表中添加新行,可以使用.NEW.EXPECTED_SHIP_DATE,.NEW.EXPECTED_RECEIVE_DATE更新訂單表。不要在訂單上創建實體化視圖
相關問題
- 1. 爲什麼在這個查詢中有無效的標識符?
- 2. 它爲什麼說無效表達?
- 3. 爲什麼GETDATE()無效的標識符
- 4. 這個查詢應該做什麼? (爲什麼它會失敗?)
- 5. 複合觸發無效的標識符
- 6. 爲什麼在sqlite中觸發查詢失敗 - QT在這裏 - ?
- 7. 爲什麼QPixmap.load()失敗,即使它說它不?
- 8. 爲什麼它說粗體=是一個無效的語法?
- 9. Oracle觸發器ORA-04098:觸發器無效且失敗的重新驗證
- 10. 爲什麼我的PLSQL觸發器驗證不會失敗?
- 11. 爲什麼觸發器中的更新失敗?
- 12. 無效標識符時產生觸發
- 13. 爲什麼它失敗SetFilePointer()?
- 14. 這爲什麼會失敗?
- 15. 爲什麼這會失敗
- 16. 這是爲什麼失敗?
- 17. 爲什麼這個觸發器不會觸發?
- 18. 爲什麼我的觸發器無法識別列?
- 19. 觸發失敗-ORA-04098無效且失敗,重新驗證sql
- 20. 爲什麼Python說這個Netscape cookie文件無效?
- 21. 這個JavaScript爲什麼會失敗?
- 22. 爲什麼這個MySQL查詢失敗?
- 23. 爲什麼這個Mockito測試失敗?
- 24. 爲什麼這個MockMvc測試失敗?
- 25. 爲什麼這個FQL調用失敗?
- 26. 爲什麼這個if語句失敗?
- 27. access_ok爲什麼這個ioctl失敗
- 28. 爲什麼這個代碼失敗?
- 29. 爲什麼這個java casting失敗
- 30. 爲什麼這個原型失敗?
錯誤消息至少會指向哪一行代碼具有違規標識符。 –
不是你錯誤的原因,但是第一條UPDATE語句將更新表中的每一行 - 是你想要的嗎? –
@Jeffrey:有一個訂單表,它沒有這三列:expected_ship,expected_receive和actual_receive。所以,我改變了Orders表來添加這三個屬性。現在,對於訂單表中的每個新插入,我必須確保expected_ship和expected_receive會自動更新。 – indolent