2014-11-24 38 views
0

我希望如此,如果一個會員未付餘額超過罰款50 在底部,我在這個問題2次的嘗試沒有租金被允許創建觸發器成員租房。但是,當我將數據插入麥克 - 維克,它不會提高應用程序錯誤。邁克維克斯未付餘額罰款是55美元,所以它應該絆旗。

INSERT INTO Transaction 
    VALUES ('6','Mem101','V104','C1', '14-Nov-14', '16-Nov-14', 'R101'); 

我能做些什麼來解決這個問題?謝謝!


--Trigger #3 

--Attempt #1 
CREATE or Replace Trigger Unpaid_Balance_Rule 
BEFORE INSERT ON Member 
FOR EACH ROW 
BEGIN 
IF :new.Unpaid_Bal > 50 THEN 
RAISE_APPLICATION_ERROR(-20003, 'Balances exceeds 50 dollars, please pay dues before renting'); 
END IF; 
END; 
/
show errors; 


--Attempt #2 

Create or Replace Trigger UnpaidBal_50_Rule 
Before insert on Member 
For Each Row 

Begin 
Select Mem_num into OverBalance from Member where unpaid_bal > 50; 
    IF (:new.Mem_num = OverBalance) 
    THEN raise_application_error (-20003, 'Balances exceeds 50 dollars, please pay dues before renting'); 
    END IF; 
end; 
/
show error; 
+3

你的觸發器在'Member'表,但你插入的'Transaction'表。所以這些插入將永遠不會「觸發」你的規則檢查。例如「不要讓通過此門的人」「哦,好吧,我就通過這個窗口」爬 – 2014-11-24 20:42:00

+0

你觸發#1作品fine.Do創建表,創建觸發器,然後插入數據?我的意思是上面貼的順序是創建表 - >插入數據 - >創建觸發器這是不對的。 – Shankar 2014-11-24 21:42:35

回答

1

,因爲你想插入數據

之前查詢表會員您嘗試將不工作,

你嘗試1應該工作,但它始終是良好的數量列中插入數代替依靠隱式轉換

因此嘗試以下

--Insert for Member Table 
INSERT INTO Member 
VALUES ('Mem101','Mike Vick','Atlanta','320-274-3179',to_date('14-Oct-12','dd-mon-yyyy'),55); 
相關問題