164 lines
3.2 KiB
Transact-SQL
164 lines
3.2 KiB
Transact-SQL
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-13
|
|
-- Description: trigger x inserimento valori in archivio storico alla cancellazione/modifica del dato
|
|
-- =============================================
|
|
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;
|
|
|
|
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
|
|
INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine)
|
|
(
|
|
SELECT UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine
|
|
FROM deleted
|
|
)
|
|
|
|
END
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
--
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_spostaUdc
|
|
*
|
|
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.11
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_spostaUdc
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@UDC VARCHAR(50),
|
|
@IdxCellaTo INT
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
/*
|
|
-- inizio mettendo in storico la posizione attuale dell'UDC (SE esiste)
|
|
INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine)
|
|
(
|
|
SELECT UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine
|
|
FROM PosizioneUdcCorrente
|
|
WHERE UDC = @UDC
|
|
)
|
|
*/
|
|
|
|
-- libero la posizione attuale dell'UDC (se c'è...)
|
|
DELETE
|
|
FROM PosizioneUdcCorrente
|
|
WHERE UDC = @UDC-- AND IdxCella = @IdxCellaFrom
|
|
|
|
-- creo una nuova posizione per l'UDC
|
|
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
|
|
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
--
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_delibera
|
|
*
|
|
* fa la delibera dell'UDC andando a processare la state machien e quindi eventualmente cambiando la sua posizione
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.09.13
|
|
*
|
|
************************************/
|
|
alter PROCEDURE stp_UDC_delibera
|
|
(
|
|
@CodTipoDelibera NVARCHAR(50),
|
|
@UDC NVARCHAR(50),
|
|
@CodSoggetto NVARCHAR(17),
|
|
@CodCS VARCHAR(2)
|
|
)
|
|
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
DECLARE @IdxPosizioneTo AS INT
|
|
DECLARE @IdxCellaTo AS INT
|
|
|
|
-- registro delibera
|
|
INSERT INTO DELIBERE
|
|
VALUES (@CodTipoDelibera, @UDC, GETDATE(), @CodSoggetto)
|
|
|
|
-- ricavo nuova posizione
|
|
SET @IdxPosizioneTo = (SELECT tt.IdxPosizioneTo
|
|
FROM TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento
|
|
WHERE (atd.CodTipoDelibera = @CodTipoDelibera))
|
|
|
|
-- calcolo la prima cella della nuova posizione...
|
|
SET @IdxCellaTo = (
|
|
SELECT TOP 1 IdxCella FROM Celle
|
|
WHERE IdxBlocco = (
|
|
SELECT IdxBlocco FROM Blocchi
|
|
WHERE CodMag=CAST(@IdxPosizioneTo AS VARCHAR(50)))
|
|
)
|
|
|
|
-- faccio update posizione
|
|
UPDATE ElencoCartellini
|
|
SET IdxPosizione = @IdxPosizioneTo
|
|
WHERE UDC = @UDC
|
|
|
|
-- ora cambio anche la posizione corrente dell'UDC (e tramite trigger storicizza...)
|
|
EXEC stp_spostaUdc @CodCS, @UDC, @IdxCellaTo
|
|
|
|
COMMIT TRAN
|
|
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|