2016-06-10 57 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

再试一次,但用单引号(')不要双引号(“) –