日期:2014-05-17  浏览次数:20426 次

触发器or存储过程
我有两个表tb_vn和tb_dj,想要实现功能“当删除tb_vn中的一条记录时,tb_dj自动删除所有满足tb_dj.jsv=tb_vn.vname的记录。”这个用触发器实现还是存储过程实现(个人偏向于触发器),语句是怎样的?如果是触发器应该在哪个表建立?
跪求答案啊!!!

------解决方案--------------------
create trigger trigger_del on tb_vn
after delete
as 
begin
declare @vname varchar
select @vname=vname from deleted
delete from tb_dj where jsv=@vname
end

------解决方案--------------------
引用:
SQL code?12345678create trigger trigger_del on tb_vnafter deleteas begindeclare @vname varcharselect @vname=vname from deleteddelete from tb_dj where jsv=@vnameend


这个还是有一点问题的,如果一次性删除的是多条记录,那么DELETED应该会有多条记录,而在Trigger中之定义一个@vname参数就会导致少删除数据。所以应该用deleted join tb_dj 然后删除记录 。
------解决方案--------------------
create trigger trigger_del on tb_vn
after delete
as 
begin
select vname into #temp11 from deleted
delete from tb_dj where jsv in (select vname from #temp11)
drop table #temp11
end
------解决方案--------------------
create trigger trigger_del on tb_vn
after delete
as 
begin
select vname into #temp11 from deleted
delete from tb_dj where EXISTS (select vname from #temp11)
drop table #temp11
end