2016-06-10 64 views
0

我在oracle中創建觸發器時遇到問題,我有一個表格「Tickets」,其中有「Price」和「Type」字段。我想製作一個觸發器,根據票證的類型(正常/減少)增加價格。在oracle中觸發事件

我正在使用CASE,但它根本不起作用。這裏是我的代碼:

CREATE OR REPLACE TRIGGER TYPE_BIR 
BEFORE INSERT ON Tickets 
FOR EACH ROW 

BEGIN 
    CASE 
     WHEN type = "normal" THEN :new.price := "15" 
     WHEN type = "reduced" THEN :new.price := "12" 
END; 

回答

3

當你說「它不工作」,你的意思是它不能編譯,或者你的意思是它沒有做你想做的事嗎?

嘗試

CREATE OR REPLACE TRIGGER TYPE_BIR 
BEFORE INSERT ON Tickets 
FOR EACH ROW 

BEGIN 
    IF :new.type = 'normal' THEN 
     :new.price := 15 ; 
    ELSIF :new.type = 'reduced' THEN 
     :new.price := 12 ; 
    END IF ; 
END; 

我認爲價格是NUMBER

或者,如果你想使用CASE ...

CREATE OR REPLACE TRIGGER TYPE_BIR 
BEFORE INSERT ON Tickets 
FOR EACH ROW 

BEGIN 
    CASE :new.type 
     WHEN 'normal' THEN :new.price := 15 ; 
     WHEN 'reduced' THEN :new.price := 12 ; 
    END CASE ; 
END; 
+0

它的作品!非常感謝! –

+0

再試一次,但用單引號(')不要雙引號(「) –