zoukankan      html  css  js  c++  java
  • Postgresql添加/删除触发器示例

    -- 定义触发器
    CREATE TRIGGER "vss_after_insert_flow_201702" AFTER INSERT ON "public"."vss_passenger_flow_201702"
    FOR EACH ROW
    EXECUTE PROCEDURE "vss_after_insert_flow"();
    --删除触发器
    DROP TRIGGER vss_after_insert_flow_201702 ON vss_passenger_flow_201702 ;
    --定义存储过程
    
    -- FUNCTION: public.vss_after_insert_flow()
    
    -- DROP FUNCTION public.vss_after_insert_flow();
    
    CREATE FUNCTION public.vss_after_insert_flow()
        RETURNS trigger
        LANGUAGE 'plpgsql'
        COST 100.0
        VOLATILE NOT LEAKPROOF 
    AS $BODY$
    BEGIN
        --Routine body goes here...
        IF EXISTS(SELECT camera_id FROM vss_passenger_hour 
            WHERE camera_id = NEW.i_camera_id and datetime = NEW.start_dt::DATE and EXTRACT(hour FROM time) = EXTRACT(hour FROM NEW.start_dt::TIME)) THEN
        UPDATE vss_passenger_hour 
            SET passenger_in_count = passenger_in_count + NEW.i_enter_num , passenger_out_count = passenger_out_count + NEW.i_leave_num 
                WHERE camera_id = NEW.i_camera_id and datetime = NEW.start_dt::DATE and EXTRACT(hour FROM time) = EXTRACT(hour FROM NEW.start_dt::TIME);
        ELSE
        INSERT INTO vss_passenger_hour(region_id,camera_id,datetime,time,passenger_in_count,passenger_out_count)
            VALUES (NEW.i_area_id,NEW.i_camera_id,NEW.start_dt,to_timestamp(to_char(NEW.start_dt, 'yyyy-mm-dd HH24')||':00:00', 'yyyy-mm-dd HH24:MI:SS'),NEW.i_enter_num,NEW.i_leave_num);
        END IF;
        RETURN NULL;
    END
    $BODY$;
    
    ALTER FUNCTION public.vss_after_insert_flow()
        OWNER TO postgres;
  • 相关阅读:
    [hdu4035]maze
    [codeforce][148d]
    [bzoj3507]通配符匹配
    [BZOJ4831]
    子串
    【洛谷1373】小a和uim之大逃离
    【JZOJ6303】演员
    [jzoj6296]选票
    字符串哈希
    [ABC137d&e]RE
  • 原文地址:https://www.cnblogs.com/winkey4986/p/6407301.html
Copyright © 2011-2022 走看看