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;
  • 相关阅读:
    洛谷 P1879 [USACO06NOV]玉米田Corn Fields
    洛谷 P2709 小B的询问
    洛谷 P1972 [SDOI2009]HH的项链
    洛谷 P3648 [APIO2014]序列分割
    洛谷 P2157 [SDOI2009]学校食堂
    洛谷 P1198 [JSOI2008]最大数
    洛谷 P3870 [TJOI2009]开关
    【模板】线段树2
    【模板】线段树1
    git之远程标签下载(远程分支)
  • 原文地址:https://www.cnblogs.com/winkey4986/p/6407301.html
Copyright © 2011-2022 走看看