CREATE TABLE [dbo].[PosizioneUdcCorrente] (
    [UDC]         NVARCHAR (50) NOT NULL,
    [IdxCella]    INT           NOT NULL,
    [CodCS]       NCHAR (2)     NOT NULL,
    [DataRif]     DATETIME      NULL,
    [CodSoggetto] NCHAR (17)    NULL,
    CONSTRAINT [PK_PosizioneUdcCorrente] PRIMARY KEY CLUSTERED ([UDC] ASC, [IdxCella] ASC),
    CONSTRAINT [FK_PosizioneUdcCorrente_Celle] FOREIGN KEY ([IdxCella]) REFERENCES [dbo].[Celle] ([IdxCella]) ON UPDATE CASCADE,
    CONSTRAINT [FK_PosizioneUdcCorrente_ElencoCartellini] FOREIGN KEY ([UDC]) REFERENCES [dbo].[ElencoCartellini] ([UDC]) ON UPDATE CASCADE
);




GO
CREATE NONCLUSTERED INDEX [IX_PosizioneUdcCorrente_idxCella]
    ON [dbo].[PosizioneUdcCorrente]([IdxCella] ASC)
    INCLUDE([DataRif]) WITH (FILLFACTOR = 90);


GO

-- =============================================
-- Author:		Samuele E. Locatelli
-- Create date: 2009-09-13
-- Mod date:	2012-09-17
-- Description:	trigger x inserimento valori in archivio storico alla cancellazione/modifica del dato (tranne curr user)
-- =============================================
CREATE TRIGGER trg_storico 
   ON  PosizioneUdcCorrente 
   AFTER DELETE,UPDATE
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    DECLARE @FlaStoricizza AS Bit = 0;  -- impostazione x test storicizza sempre attivo

    -- Se è una cancellazione Storicizzo
    IF ( SELECT COUNT(*) FROM inserted ) = 0   
       SET @FlaStoricizza = 1 ;

	-- devo EVITARE di salvare se c'è solo modifica del codSoggetto...
	IF( UPDATE(UDC) OR UPDATE(IdxCella) OR UPDATE(CodCS) OR UPDATE(DataRif) ) 
	   SET @FlaStoricizza = 1;


--	IF( UPDATE(UDC) OR UPDATE(IdxCella) OR UPDATE(CodCS) OR UPDATE(DataRif) )

    IF @FlaStoricizza = 1
	BEGIN
        -- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
		INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine, CodSoggetto)
		(
			SELECT	UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine, CodSoggetto
			FROM	deleted
		)
	END
END
