开发者

SQL Merge Query - Executing Additional Query

I have written a working T-SQL MERGE statement. The premise is that Database A contains records about customer's support calls. If they are returning a product for repair, Database B is to be populated with certain data elements from Database A (e.g. customer name, address, product ID, serial number, etc.) So I will run an SQL Server job that executes an SSIS package every half hour or so, in which the MERGE will do one of the following:

  1. If the support call in Database A requires a product return and it is not in Database B, INSERT it into Database B..
  2. If the support call in Database A requires a product return and it is in Database B - but data has changed - UPDATE it in Database B.
  3. If there is a product return in Database B but it is no longer indicated as a product return in Database A (yes, this can happen - a customer can change their mind at a later ti开发者_JAVA百科me/date and not want to pay for a replacement product), DELETE it from Database B.

My problem is that Database B has an additional table with a 1-to-many FK relationship with the table being populated in the MERGE. I do not know how, or even if, I can go about using a MERGE statement to first delete the records in the table with FK constraint before deleting the records as I am currently doing in my MERGE statement.

Obviously, one way would be to get rid of the DELETE in the MERGE and hack out writing IDs to delete in a temp table, then deleting from the FK table, then the PK table. But if I can somehow delete from both tables in WHEN NOT MATCHED BY SOURCE that would be cleaner code. Can this be done?


You can only UPDATE, DELETE, or INSERT into/from one table per query.

However, if you added an ON DELETE CASCADE to the FK relationship, the sub-table would be cleaned up as you delete from the primary table, and it would be handled in a single operation.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜