Torna al Thread

IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[InserisciZone]')) DROP TRIGGER [dbo].[InserisciZone] GO CREATE TRIGGER [dbo].[InserisciZone] ON [dbo].[Zone] AFTER INSERT AS BEGIN DECLARE @numins INT DECLARE @codse CHAR(8) -- controllo che esista una sola riga in inserimento SELECT @numins = COUNT(*) FROM inserted IF @numins <> 1 BEGIN RAISERROR(N'Non sono ammessi inserimenti di massa sulle zone',10,1) ROLLBACK END SET NOCOUNT ON; -- calcolo il codice del sistema gestionale esterno (i primi otto caratteri) SET @codse = CAST((SELECT I.codice FROM inserted AS I) AS char(8)) -- controllo che il codice non sia già presente nel sistema gestionale esterno IF EXISTS (SELECT * FROM DBEXT..port.zon AS Z WHERE (Z.zn_sigla = CAST(@codse AS char(8)))) BEGIN RAISERROR(N'La zona è già presente sul gestionale',10,1) ROLLBACK END -- inserisco il nuovo codice nel sistema esterno e aggiorno il legame sulla tabella locale BEGIN TRY BEGIN INSERT INTO DBEXT..port.zon (zn_sigla, zn_descrizione, zn_ragg_1, zn_ragg_2) SELECT CAST(@codse AS char(8)), CAST(I.descrizione AS char(30)), 'AUT', '' FROM inserted AS I; UPDATE dbo.Zone SET dbo.Zone.codSE = CAST(@codse AS char(8)) FROM dbo.Zone AS Z INNER JOIN inserted AS I ON (Z.codice = I.codice); END END TRY BEGIN CATCH BEGIN PRINT 'Errore: '+ CAST(ERROR_NUMBER() AS VARCHAR) +' '+ ERROR_MESSAGE() --RAISERROR(N'Problemi in inserimento zona sul gestionale',10,1) ROLLBACK END END CATCH END
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5