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;
  • 相关阅读:
    数据结构2
    EF Fluent API
    VS2017+mysql5.7 连接数据库生成实体
    JavaScript中的枚举
    EasyUI datagird 排序 按数字类型的问题
    php 将秒数转换为时间(年、天、小时、分、秒)
    mySQL把秒转换成日期
    Android 界面间传参数
    android 登陆界面
    Android 在已有的项目上创建新的项目
  • 原文地址:https://www.cnblogs.com/telwanggs/p/11282535.html
Copyright © 2011-2022 走看看