sqlserver触发器转换为postgresql

oracle_1010 2012-06-24 12:13:09
sqlserver中触发器语句如下,想转换为postgresql中的触发器语句,现在我瞅见转换语句我的头疼了,郁闷死了
我正在自己学习这个,但身边没有个个讨论,所以还是把原码放网上找个人一起商讨交流一下吧

IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'tri_DeviceStatus_insupd' AND type = 'TR')
DROP TRIGGER tri_DeviceStatus_insupd
GO
CREATE TRIGGER tri_DeviceStatus_insupd
ON DeviceStatus
FOR INSERT, UPDATE
AS
DECLARE @devID varchar(50),
@devStatus varchar(30),
@devMsg varchar(30),
@uID int
BEGIN
select @uID=UserID,@devID=DID,@devStatus=Status from inserted i
if @devID = 'security_Kitchen_SmokeAlarm'
begin
if(@devStatus = 'State=On')
select @devMsg='发生报警'
else
select @devMsg='停止报警'
insert into Message values(4,@uID,'烟雾报警器',@devMsg,getDate())
end
else if @devID = 'security_Balcony_Magnetic'
begin
if(@devStatus = 'State=On')
select @devMsg='发生报警'
else
select @devMsg='停止报警'
insert into Message values(4,@uID,'门磁感应',@devMsg,getDate())
end
else if @devID = 'security_Lobby_Move'
begin
if(@devStatus = 'State=On')
select @devMsg='发生报警'
else
select @devMsg='停止报警'
insert into Message values(4,@uID,'移动感应',@devMsg,getDate())
end
END

...全文
211 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2012-06-24
  • 打赏
  • 举报
回复
这个学习语法慢慢改吧
ACMAIN_CHM 2012-06-24
  • 打赏
  • 举报
回复
错误信息是什么? 先把其中语句全部删除,然后一句一句加。
oracle_1010 2012-06-24
  • 打赏
  • 举报
回复
主要是这个存储过程不太好写,用触发器直接调用自己封装的存储过程很容易,只是这个存储过程我写出错呀

972

社区成员

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

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