谁能帮我把这个oracle触发器改成postgreSQL的 谢谢

yrcy0418 2010-04-21 09:42:24
原oracle触发器脚本

create or replace trigger TIB_T_RACKTEMPHUM_UPDATED
after insert on t_racktemphum
for each row
declare
v_count int;
-- local variables here
begin
select count(*) into v_count from T_RACKTEMPHUM_UPDATED where sensorid=:new.sensorid;
if v_count>0 then
update T_RACKTEMPHUM_UPDATED set temp=:new.temp,humid=:new.humid,collecttime=:new.collecttime
where sensorid=:new.sensorid;
else
insert into T_RACKTEMPHUM_UPDATED values (:new.sensorid,:new.temp,:new.humid,:new.collecttime);
end if;
end TIB_T_RACKTEMPHUM_UPDATED;


建表语句


CREATE TABLE "public"."t_racktemphum" (
"id" numeric DEFAULT NULL NOT NULL,
"sensorid" numeric(10) DEFAULT NULL::numeric,
"temp" numeric(8,2) DEFAULT NULL::numeric,
"humid" numeric(8,2) DEFAULT NULL::numeric,
"collecttime" timestamp(6) DEFAULT NULL::timestamp without time zone,
CONSTRAINT "t_racktemphum_pkey" PRIMARY KEY ("id"),
CONSTRAINT "t_racktemphum_id_check" CHECK (id IS NOT NULL),
CONSTRAINT "t_racktemphum_id_check1" CHECK (id IS NOT NULL)
)
WITH (OIDS=FALSE)
;

ALTER TABLE "public"."t_racktemphum" OWNER TO "postgres";

COMMENT ON TABLE "public"."t_racktemphum" IS '机柜温湿度采集表';

COMMENT ON COLUMN "public"."t_racktemphum"."id" IS '流水号';

COMMENT ON COLUMN "public"."t_racktemphum"."sensorid" IS '传感器编号';

COMMENT ON COLUMN "public"."t_racktemphum"."temp" IS '温度';

COMMENT ON COLUMN "public"."t_racktemphum"."humid" IS '湿度';

COMMENT ON COLUMN "public"."t_racktemphum"."collecttime" IS '采集时间';;


实现功能是每当t_racktemphum执行插入时,就更新T_RACKTEMPHUM_UPDATED表sensorid相等的记录,如果没有做插入,有就做更新
...全文
67 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

956

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧