如何根据另一个列值Trigger语句设置列值?

时间:2017-06-02 11:13:51

标签: sql oracle triggers

想象一下,表中有两列;天气和工具

WEATHER TOOL 
sun
autumn 
rain

如果天气=太阳,那么该工具应该具有价值'没有伞'如果天气=秋天,那么该工具应该具有价值“没有伞”#39; 但是如果天气=下雨,那么工具应该具有价值'伞

应使用触发器或插入语句生成结束表。

CREATE OR REPLACE EDITIONABLE TRIGGER "UPDATE_TOOL" 
before insert on "UPDATING_TOOL_TABLE"
for each row
begin
IF WEATHER = 'sun' THEN 
    SET TOOL = 'no umbrella';
ELSE IF WEATHER = 'autumn' THEN
    SET TOOL = 'no umbrella'; 
ELSE IF WEATHER = 'rain' THEN 
    SET TOOL = 'umbrella'; 
END IF; 

end;
 /
ALTER TRIGGER "UPDATE_TOOL" ENABLE; 

请查看我创建的Trigger语句,该语句不起作用。我在ORACLE SQL中工作。

谢谢。

1 个答案:

答案 0 :(得分:1)

在Oracle 11g +中,您不需要实际存储该值。您可以动态生成它:

if ($('.sidebar-menu-container li').hasClass('current-menu-item')) {
    $(this).addClass('expanded');
}

编辑:

关于你的触发器,我希望有类似的东西:

alter table UPDATING_TOOL_TABLE
    add tool generated always as (case when weather in ('sun', 'autumn') then 'no umbrella' when weather in ('rain') then 'umbrella' end);

或:

begin
    select (case when :new.weather in ('sun', 'autumn') then 'no umbrella' 
                 when :new.weather in ('rain') then 'umbrella'
            end) into :new.tool
    from dual;
end;