Store procedure

di il
1 risposte

Store procedure

Ciao a tutti, Sono nuovo del forum, da poco sto usando sql server 2014, mi trovo in difficoltà:
Devo fare una store procedure che confronta i record presenti in due db, il db 1 ha i dati aggiornati mentre il db2 no.
In caso i record non sono presenti in db1, allora dovrà cancellarli anche dal db2.
Non riesco però a far funzionare questa query, posso chiedervi un aiuto.
Grazie anticipatamente


USE [CyberGuideDWH]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[DeleteDT_AlertType]
AS
begin
SET NOCOUNT ON
SET IDENTITY_INSERT [CyberGuideDWH].[dbo].[DT_AlertType] ON
DELETE [DT_AlertType]
FROM [CyberGuideDWH].[dbo].[DT_AlertType] AS dt, [CyberGuide].[dbo].[AlertTypes] as at
WHERE dt.Id_AlertType = at.Id
SET IDENTITY_INSERT [CyberGuideDWH].[dbo].[DT_AlertType] OFF
End

--il db1 è:[CyberGuide].[dbo].[AlertTypes], il db2 è: [CyberGuideDWH].[dbo].[DT_AlertType]

1 Risposte

  • Re: Store procedure

    Non so se ho capito bene,
    ma se i record non ci sono, come pensi che possa riuscire ad identificarli con la WHERE?
    E' impossibile...

    Dovresti usare una sotto-query NOT IN (oppure NOT EXISTS) eseguendo un confronto sulla PK.
    Esempio, supponiamo che la PK sia il campo ID dovresti fare qualcosa del genere:
    
    DELETE FROM t1 
    WHERE t1.ID NOT IN 
    ( 
         SELECT t2.ID FROM t2
    )
    
    Per vedere i record interessati dal mio esempio puoi fare una prova sostituendo DELETE con SELECT * e ti mostra i record che saranno eliminati.

    IN (Transact-SQL)


    EXISTS (Transact-SQL)
Devi accedere o registrarti per scrivere nel forum
1 risposte