Sql 使用“合并”从依赖表中删除值
我试图在源数据库表和目标数据库表中匹配表中的行。我可以删除dest表中存在而源表中不存在的行。 但是,我还需要删除dest db中其他表中的依赖行。是否有一种方法可以在合并中实现这一点 Merge语句如下所示Sql 使用“合并”从依赖表中删除值,sql,sql-server-2008,Sql,Sql Server 2008,我试图在源数据库表和目标数据库表中匹配表中的行。我可以删除dest表中存在而源表中不存在的行。 但是,我还需要删除dest db中其他表中的依赖行。是否有一种方法可以在合并中实现这一点 Merge语句如下所示 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 =
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
提前感谢。按照尼纳德·齐夫科维奇的建议使用级联删除 以下是一些相关链接,提供了一些可能的答案:
请发布您尝试过的
MEREGE
语句。您可以(应该)在dest db中的外键上使用ON DELETE CASCADE
选项来处理相关行。谢谢Nenad Zivkovic,我正在将select中的值捕获到临时表中,然后编写单独的删除脚本,我不能用级联上的delete触发器更新表,因为这样我就必须重新生成我的dbml。。。我有很多表格要更新。但是的,我同意删除级联可以很好地工作,我会期待重新工作后的高峰期。谢谢,tjm6f4,我正在将select中的值捕获到一个临时表中,然后编写单独的删除脚本,我无法使用级联上的delete触发器更新表,因为这样我就必须重新生成我的dbml。。。我有很多表格要更新。但是的,我同意删除级联可以很好地工作,我会期待重新工作后的高峰期。谢谢,没问题!祝你好运!