Tsql SQL合并查询-执行附加查询

Tsql SQL合并查询-执行附加查询,tsql,sql-server-2008,sql-server-2008-r2,Tsql,Sql Server 2008,Sql Server 2008 R2,我已经编写了一个有效的T-SQL合并语句。前提是数据库A包含有关客户支持电话的记录。如果他们返回产品进行维修,数据库B将填充数据库a中的某些数据元素(例如,客户名称、地址、产品ID、序列号等),因此我将运行SQL Server作业,每半小时左右执行一次SSIS包,其中合并将执行以下操作之一: 如果数据库A中的支持调用需要产品退货,则 不在数据库B中,请将其插入数据库B中 如果数据库A中的支持调用需要产品退货,则 在数据库B中-但数据已更改-在数据库B中更新它 如果数据库B中存在产品退货,但该退货

我已经编写了一个有效的T-SQL合并语句。前提是数据库A包含有关客户支持电话的记录。如果他们返回产品进行维修,数据库B将填充数据库a中的某些数据元素(例如,客户名称、地址、产品ID、序列号等),因此我将运行SQL Server作业,每半小时左右执行一次SSIS包,其中合并将执行以下操作之一:

  • 如果数据库A中的支持调用需要产品退货,则 不在数据库B中,请将其插入数据库B中
  • 如果数据库A中的支持调用需要产品退货,则 在数据库B中-但数据已更改-在数据库B中更新它
  • 如果数据库B中存在产品退货,但该退货不再存在 表示为数据库a中的产品退货(是的,这可能发生-客户可以在以后的时间/日期改变主意,不想为更换产品付款),将其从数据库中删除 B
  • 我的问题是数据库B有一个额外的表,该表与合并中填充的表具有1对多FK关系。我不知道如何,甚至是否可以使用MERGE语句在删除记录之前先使用FK约束删除表中的记录,就像我当前在MERGE语句中所做的那样


    显然,一种方法是去掉合并中的DELETE,然后在temp表中写入要删除的id,然后从FK表中删除,然后从PK表中删除。但如果我能在源代码不匹配的情况下从
    中的两个表中删除,那将是更干净的代码。可以这样做吗?

    每个查询只能
    更新
    删除
    ,或
    插入


    但是,如果您在删除级联中向
    FK
    关系中添加了
    ,子表将在您从主表中删除时被清除,并且将在一次操作中处理。

    哦,天哪。我已经很长时间没有使用级联FK了,我甚至没有想到这一点。回到基础:)谢谢你指出这一点。