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

请教:关于SQL触发器,在线等
有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的办法 


------解决方案--------------------
...For Delete
As
select * from deleted
------解决方案--------------------
create trigger tri_AA ON 表A
for deleted
as 
declare @ID INT

select @ID=ID from deleted
insert into 表B select * from deleted