我曾嘗試使用下面的代碼創建的視圖在甲骨文12C:甲骨文12C試驗引發的看法
CREATE VIEW ConcertView AS
SELECT a.ConcertNo, a.Concert_Name, a.Price, a.Duration, a.City, b.EventDate, b.Even t_Name
FROM Concert a,Events b
WHERE a.ConcertNo = b.ConcertNo
AND a.ConcertNo != 'CN002'
視圖創建沒有任何錯誤。然後使用以下代碼在視圖上創建一個觸發器:
CREATE OR REPLACE TRIGGER check_month
INSTEAD OF DELETE OR INSERT OR UPDATE ON ConcertView
DECLARE
ConcertDate date;
BEGIN
IF (to_char(EventDate, 'DD-MM-YY') = 'JUL') THEN
raise_application_error(-20000, 'Concerts cannot be run during JULY');
END IF;
END;
Trigger created.
該觸發器創建時沒有任何錯誤。
我試圖確保音樂會不能在7月份進行。 但觸發器不採取任何行動。任何人都可以讓我知道我做錯了什麼,或者說明如何測試觸發器?
爲什麼視圖,而不是在表上創建觸發器?由於在視圖中不會直接插入或更新,所以觸發器將無法工作(根據我的理解) – Spidey
我在視圖上測試觸發器的原因是因爲可以在任何階段刪除視圖並重新創建如果出現任何問題,通過再次將2個表連接在一起。 – starplus