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

问下一个多表删除记录的SQL语句
一个新闻发布系统,其中有三张表,
表tb_newstype
id name
2 aa
3 bb

表tb_news
id title contents newstypeid
3 aa aaa 2
4 bb bbb 2
5 cc ccc 3

表tb_command
id contents newsid
3 bb 3
4 cc 3
5 dd 4

分别是新闻类型表、新闻列表、评论列表,如果我要删除一条新闻类型,连带该新闻类型对应的新闻,和每条新闻对应的新闻评论也一并删除,这个SQL语句该怎么写?
(比如删除第一张表中id为2的新闻类型,那么第二张表中newstypeid为2的新闻(即id为3、4的新闻)和第三张表中对应的新闻评论(newsid为3、4)也会一并删除)

------解决方案--------------------
级联就行.
或者用触发器.
------解决方案--------------------
1.最好做级联

2.可以写语句
SQL code
 select a.id,b.newstypeid,c.newsid from into #tb  tb_newstype a inner join tb_news b on a.id=b.newstypeid
inner join  tb_command c on b.id=c.newsid

delete from tb_newstype where id in (select id from #td)
delete from tb_news where newstypeid in (select newstypeid from #td)
delete from tb_command where newsid in (select newsid  from #td)