日期:2014-05-18  浏览次数:20456 次

请教:关于触发器,在线等
有OutBox,Sended两张表,没有关联,主键均为自增长
当OutBox中新增了记录,硬件自动从Outbox表读取数据发送短信后,把OutBox中对应记录删掉,然后在Sended表中自动插入一条记录对应为刚刚的发送操作,
原本想从Sended表建个after insert触发器,可是发现不知道刚刚sended的是哪一条记录,
因为Outbox的插入是自己做的,我有办法确定,所以我想从outbox表写一个触发器,在删除操作之前得到马上要被删掉的这条记录的ID可有办法或建议

现在维护的这个变态的要死,业务系统是Oracle数据库,但是硬件只支持SQL,所以 我从业务系统过来的数据全部都是进入Oracle,然后涉及到发送啊,接收啊,转发啊,记录啊,乱七八糟的与硬件交互的,全要在Oracle和SQL之间跳来跳去,Oralce这边的主键ID都是 CountHelper.Identifier 是唯一的,SQL那边的都是自增长的,关于然同一个发送记录在Oracle和SQL之间关联起来,小弟是头疼+蛋疼 无比的疼啊,好啦 不诉苦了


求 Delete之前取得即将被Delete掉的这条记录的ID的办法

------解决方案--------------------
go
create trigger tri_tracy on OutBox
for insert
as
declare @id ont
if exists (select 1 from inserted)
begin
--先插入
insert send
select * from inserted
--再发送信息
end

--仅供参考
------解决方案--------------------
所以我想从outbox表写一个触发器,在删除操作之前得到马上要被删掉的这条记录的ID可有办法或建议

create trigger my_trig on outbox for deleted
as
begin
--假设ID为INT型.
declare @id as int
select @id = id from deleted
--或
set @id = (select id from deleted)
end