从相应的表中删除相关数据

时间:2016-01-04 06:45:58

标签: sql sql-server sql-server-2008

我有三张表,其中包含一些数据,如屏幕截图enter image description here

所示

请看看他们。有一个表tbCompanyAgent,它也包含来自tbLicence的一些信息。执行复杂的业务操作后,我们能够在tbCompanyAgent中的LicenceTypeNames feild中检测tbLicence中的LicenceTypeId字段(其中LicenceTypes保存为逗号分隔的字符串)。然后在检测到Id之后,我们将其保存在tbCompanyAgent的LicenceTypeId字段中。

如果我们必须更新表tbLicence,我们首先根据LicenceType字段从表中删除记录,该字段表现为Group Id,然后我们使用表tbLicence中其他列的较新值重新插入表中。由于业务需求复杂,我们必须这样做。

现在我的问题是,如果我们必须更新tbLicence,让我们假设我们现在拥有LicenceTypesName列,其中包含新的值,例如" Life,Accident和Health"。然后应该从tbCompanyAgent中删除所有相应的enteries。

我想做类似以下代码行的事情...... 它将首先检查LicenceTypesNames字段或bis blank(第一次插入的情况)中的任何更改,然后执行插入和删除操作。否则它应该只执行简单的插入操作。

          Declare @LTN as nvarchar(MAX);

          SELECT @LTN = LicenceTypesNames 
          FROM tbLicence 
          WHERE LicenceType = @LicenceType

         IF @LTN != @LicenceTypesNames
         DELETE FROM tbCompanyAgent  
         WHERE LicenceNumber IN (SELECT DISTINCT LicenceNumber 
         FROM tbLicence 
         WHERE LicenceType = @LicenceType)  
         INSERT INTO [dbo].[tbLicence]( ...) 
         ELSE 
         INSERT INTO  [dbo].[tbLicence](...)

任何人都可以提供更好的查询方法!请帮忙

0 个答案:

没有答案