首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

触发器or存储过程解决方法

2013-02-06 
触发器or存储过程我有两个表tb_vn和tb_dj,想要实现功能“当删除tb_vn中的一条记录时,tb_dj自动删除所有满足

触发器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 

热点排行
Bad Request.