CREATE OR REPLACE TRIGGER EVA
AFTER INSERT ON C_EVALUATION
FOR EACH ROW
DECLARE
v_cid number(25);
v_isbn number(25);
v_cname VARCHAR2(50);
v_tittle VARCHAR2(150);
v_date date;
v_location VARCHAR2(50);
v_eva VARCHAR2(250);
BEGIN
v_cid:=:OLD.C_ID;
v_isbn:=:OLD.B_ISBN;
v_eva:=:OLD.e_desc;
SELECT C_NAME INTO v_cname FROM C_CUSTOMER WHERE C_ID = v_cid;
select l_date INTO v_date FROM C_LEND where c_id = v_cid;
select B_TITTLE INTO v_tittle FROM C_BOOK WHERE B_ISBN = v_isbn;
SELECT TOWN INTO v_location FROM COPY WHERE B_ISBN = v_isbn;
IF :NEW.R_ID IS NULL
THEN
INSERT INTO e_audit (
c_name,
b_tittle,
h_date,
location,
evaluation
) VALUES (
v_cname,
v_tittle,
v_date,
v_location,
v_eva
);
END IF;
END;
/
編譯給出,但評價,速率應該由客戶來定,如果客戶給出的利率爲空值以下觸發器應該工作。但是我們收到一個錯誤,表示語句被忽略,表或視圖不存在。我檢查了兩次或更多,但所有的表名和ID都是完美的。請給我們解決方案,以解決錯誤
可能SELECT TOWN INTO v_location FROM COPY WHERE B_ISBN = v_isbn;是問題嗎?在其他地方,你使用的是x_風格的前綴,但出於某種原因,你不適用於TOWN和COPY。另外你的插入有位置和評估沒有前綴 –
真棒喬納森,我犯了一個錯誤的表名。我們已經修復了它,非常感謝,觸發器編譯沒有錯誤,但是當我們嘗試給出空值評估時,我們得到一個錯誤,說'確切的讀取返回的行數多於請求的行數','執行期間的錯誤'EVA''的觸發器,所以我不知道如何解決這個問題,如果你能幫助我,我會很高興 – Sazny14
我已經添加了答案 –