有两个表 A,B.B数据表中有一个外键字段FK_A,这是A表主键,两表通过这个外键关联.现在知道A表某一个记录的主键(ID)是X,要求删除与之关联的B表中的数据.我是这么写的DELETE B.* FROM A, B WHERE A.ID = X and B.FK_A = A.ID但是这个写法在Access中认为是错误的,于是用下面的写法:DELETE FROM B WHERE B.FK_A in (SELECT A.ID FROM A WHERE A.ID = X)想问一下大家,还有别的好一点的写法么?我觉的第二个写法自己都很难接受.另外
这只是2个表的关联,实际上这样的关联可能有很多级.比如:A关联B,B关联C...N关联N+1,然后知道A表某一个记录的ID,要求删除
N+1表的与之关联的数据.
这只是2个表的关联,实际上这样的关联可能有很多级.比如:A关联B,B关联C...N关联N+1,然后知道A表某一个记录的ID,要求删除
N+1表的与之关联的数据.
delete from A where ID = X;
commit;
begin transaction
/*删除相关引用*/
delete from Top_User_CK where uid=@UID
delete from Top_User_QX where uid=@UID
delete from Top_User_QX_KW where uid=@UID
delete from Top_User_QX_Cust where uid=@UIDdelete from top_user where uid=@UID if @@error=0
begin
commit transaction
return 0
end
else
begin
rollback transaction
return -1
end就像这样
你可能没有理解我的问题,再说一下A表和B表关联,B中有A的外键FK_A
B表和C表关联,C中有B的外键FK_B
N表和N+1表关联,N+1中有N的外键FK_N现在知道A中某一个记录的主键X,要求删除N+1表中的数据
目前我的办法如下:DELETE FROM N+1 WHERE N+1.ID IN
(SELECT N+1.ID FROM A,B,...,N+1
WHERE A.ID = X AND A.ID = B.FK_A AND B.ID = C.FK_B AND ... AND N.ID = N+1.FK_N)但是我觉得这个写法不太好,也不知道这么多的关联效率如何,所以想问一下有没有别的做法?
JET SQL 帮助(jet4 access2000)下载地址http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
删除A表中所有a.X1=B.X1 and a.X2=b.X2的纪录,如何作?
DELETE B FROM A, B WHERE A.ID = X and B.FK_A = A.ID
试试!
有问题在CSDN上给我留言..