sql1="DELETE FROM a WHERE Class_Id="&para&";"
sql2="DELETE FROM b WHERE Class_Id="&para&";"
sqlStr=sql1 & sql2

objRs.Execute sqlstr

  
一对多表的删除

两张表a,b
a表的一条数据对应b表几条数据,请问,在删除a表这条数据的同时,也把与之对应的b表的多条数据删除,请问如何实现?
 
 
 
 
navana(我的病就是没有感觉) 于 2005-6-16 19:31:36

将两条SQL语句顺序放在一起即可
sql1="DELETE FROM a WHERE Class_Id="&para
sql2="DELETE FROM b WHERE Class_Id="&para

就像要删除某一类别的新闻一样。

 
 
 
MyGhosts(阿辉) 于 2005-6-16 22:50:19

像楼上说的就可以了,但别忘了加个事务;
 
 
 
kevin_gao(困了!累了!睡觉了!) 于 2005-6-17 1:49:16

sql1="DELETE FROM a WHERE Class_Id="&para&";"
sql2="DELETE FROM b WHERE Class_Id="&para&";"
sqlStr=sql1 & sql2

objRs.Execute sqlstr

我想是不是还要取决于具体的判定条件,如果不是明确给出a表的主码是不是应该这样作
sql1="delete from a where 字段1="&para&";"
sql2="delete from b where b.class_id in (select a.class_id from a where 字段1="&para&";)"
sqlstr=sql1 & sql2

其中a.class_id是b.class_id的外码

没必要,作外键的你删除顺序不对会报错的。只要你按顺序删就不会有问题。
而且你的语句也有问题啊,in 里面的条件在执行第一条语句后就没结果了啊。

请直接使用关系图

1,关系图
2,触发器:
CREATE TRIGGER TRIGGER_NAME ON a
FOR DELETE
AS
DELETE FROM b WHERE b.Class=a.id

3,存储过程事务
CREATE PROCEDURE Del
@a_idint-- a表中的id
as
begin transaction

delete from a where id = @a_id
delete from b where b_Class= @a_id
if @@error <> 0 rollback transaction
commit transaction
GO