使用merge从依赖表中删除值

时间:2013-05-22 07:31:05

标签: sql sql-server-2008

我正在尝试匹配源和目标数据库表中的表中的行。我能够删除dest表中存在但不存在于源表中的那一行。 但是,我还需要删除dest db中其他表中的依赖行。有没有办法在合并中实现这一目标。

合并声明如下所示。

MERGE Table1 as [Target]

using (select  A,B,C,D,E,
F,G,H,I,J,K,L
from Source.dbo.Table1 as al
where al.H is null) AS [Source]

ON ([Target].A = [Source].B)

WHEN NOT MATCHED By TARGET THEN
    INSERT(C,D,E,F,G)
    VALUES([Source].C,[Source].D,[Source].E,[Source].F,[Source].G);
WHEN NOT MATCHED BY SOURCE THEN
    DELETE;

见下图。

 Source
DB0.dbo.Table1

ID  IDID    NAME
1   6   xyz
2   3   yzx
3   4   abc
4   5   lym
5   1   tes


Dest
 Table1
ID  IDID    Name
1   6   xyz
2   3   yzx
3   4   abc
4   5   lym
5   1   tes
6   2   ads

Dependent Table
 DB1.Dbo,Table2
IDID    VALUE
1   BST
2   PL
3   NO
4   SS
5   DR
6   CR
7   LM

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用Nenad Zivkovic建议的级联删除。

以下是一些提供一些可能答案的相关链接:

How to delete from source using merge command

Delete rows from multiple tables using a single sql query