Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Transazioni, processi e trigger
venerdì 08 ottobre 2010 - 11.29
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows Server 2008 R2
|
SQL Server 2005
Bolo
Profilo
| Junior Member
58
messaggi | Data Invio:
ven 8 ott 2010 - 11:29
Buongiorno a tutti, vorrei capire il perché di questa cosa:
Una store procedure mi scrive un record in un campo di una tabella denominata CLA_CUST_TAB_REPORT e lascia gli altri su NULL
All'inserimento di un nuovo record nella tabella CLA_CUST_TAB_REPORT parte un trigger che mi compila gli altri campi
Questo trigger prende i dati tramite una select da due tabelle R5EVENTS e R5PROPERTYVALUES, solo che da R5EVENTS ho i dati ho i dati aggiornati dall'altra (R5PROPERTYVALUES) no. La cosa strana è che se disattivo il trigger e faccio partire manualmente la select del trigger i dati sono aggiornati.
Sembrerebbe un problema dovuto al fatto che fino a quando non termina il trigger non scrive sulla tabella R5PROPERTYVALUES, però visto che le operazioni sono scollegate (store procedure e trigger) non riesco a spiegarmi questa cosa...
Posto di seguito il codice del trigger.
USE EAM
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER trigger [CUST_COMPILA_ORE]
on [dbo].[CLA_CUST_TAB_REPORT]
after insert
AS
DECLARE @TIPO nvarchar(30)
DECLARE @CODICE nvarchar(30)
DECLARE @DESCRIZIONE nvarchar(80)
DECLARE @SEDE nvarchar(30)
DECLARE @OPERATORE nvarchar(30)
DECLARE @INIZIO_EFF datetime
DECLARE @FINE_EFF datetime
DECLARE @INIZIO datetime
DECLARE @FINE datetime
DECLARE @ORD_DIU decimal(18, 0)
DECLARE @ORD_NOT decimal(18, 0)
DECLARE @ORD_FES decimal(18, 0)
DECLARE @ORD_FEN decimal(18, 0)
DECLARE @ORD_EXT_DIU decimal(18, 0)
DECLARE @ORD_EXT_NOT decimal(18, 0)
DECLARE @ORD_EXT_FES decimal(18, 0)
DECLARE @ORD_EXT_FEN decimal(18, 0)
DECLARE @STR_DIU decimal(18, 0)
DECLARE @STR_NOT decimal(18, 0)
DECLARE @STR_FES decimal(18, 0)
DECLARE @STR_FEN decimal(18, 0)
DECLARE @FERIE decimal(18, 0)
DECLARE @PERMESSO decimal(18, 0)
DECLARE @MALATTIA nvarchar(1)
DECLARE @CAUSALE_IN nvarchar(30)
DECLARE @CAUSALE_OUT nvarchar(30)
SET @CODICE = (SELECT CODICE FROM inserted)
-- Compilo tutti i dati che mi servono
BEGIN
SELECT @TIPO = UCO_DESC,
-- @CODICE = @CODICE,
@DESCRIZIONE = EVT_DESC,
@SEDE = EVT_OBJECT,
@OPERATORE= EVT_PERSON,
@INIZIO_EFF = (select prv_dvalue from R5propertyvalues where prv_code = EVT_CODE and PRV_PROPERTY = 'UTNIN'),
@FINE_EFF = (select prv_dvalue from R5propertyvalues where prv_code = @CODICE and PRV_PROPERTY = 'UTNOUT'),
@INIZIO = (select prv_dvalue from R5propertyvalues where prv_code = @CODICE and PRV_PROPERTY = 'UTNCIN'),
@FINE = (select prv_dvalue from R5propertyvalues where prv_code = @CODICE and PRV_PROPERTY = 'UTNCOUT'),
@ORD_DIU = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(0),(0),(0)),
@ORD_NOT = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(0),(1),(0)),
@ORD_FES = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(1),(0),(0)),
@ORD_FEN = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(1),(1),(0)),
@ORD_EXT_DIU = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(0),(0),(1)),
@ORD_EXT_NOT = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(0),(1),(1)),
@ORD_EXT_FES = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(1),(0),(1)),
@ORD_EXT_FEN = dbo.CUST_ORE_LAVORATE (dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'ic'),dbo.CUST_RESTITUISCI_ORE_REPORT (@CODICE,'fc'),@CODICE,(1),(1),(1)),
@STR_DIU = NULL,
@STR_NOT = NULL,
@STR_FES = NULL,
@STR_FEN = NULL,
@FERIE = NULL,
@PERMESSO = NULL,
@MALATTIA = NULL,
@CAUSALE_IN = EVT_UDFCHAR01,
@CAUSALE_OUT = EVT_UDFCHAR02
FROM R5EVENTS
LEFT OUTER JOIN R5PROPERTYVALUES
ON EVT_CODE = PRV_CODE
LEFT OUTER JOIN R5UCODES
ON EVT_JOBTYPE = UCO_CODE
WHERE EVT_CODE = @CODICE AND(EVT_JOBTYPE = 'UTNTO' or EVT_JOBTYPE = 'UTNSP') AND EVT_STATUS = 'C' AND
(PRV_PROPERTY = 'UTNCIN' OR PRV_PROPERTY = 'UTNCOUT' OR PRV_PROPERTY = 'UTNIN' OR PRV_PROPERTY = 'UTNOUT')
group by evt_code, uco_desc, evt_desc, evt_object, EVT_PERSON,EVT_UDFCHAR01,EVT_UDFCHAR02
END
BEGIN
UPDATE CLA_CUST_TAB_REPORT
SET
TIPO = @TIPO,
-- CODICE = @CODICE,
DESCRIZIONE = @DESCRIZIONE,
SEDE = @SEDE,
OPERATORE = @OPERATORE,
INIZIO_EFF = @INIZIO_EFF,
FINE_EFF = @FINE_EFF,
INIZIO = @INIZIO,
FINE = @FINE,
ORD_DIU = @ORD_DIU,
ORD_NOT = @ORD_NOT,
ORD_FES = @ORD_FES,
ORD_FEN = @ORD_FEN,
ORD_EXT_DIU = @ORD_EXT_DIU,
ORD_EXT_NOT = @ORD_EXT_NOT,
ORD_EXT_FES = @ORD_EXT_FES,
ORD_EXT_FEN = @ORD_EXT_FEN,
STR_DIU = @STR_DIU,
STR_NOT = @STR_NOT,
STR_FES = @STR_FES,
STR_FEN = @STR_FEN,
FERIE = @FERIE,
PERMESSO = @PERMESSO,
MALATTIA = @MALATTIA,
CAUSALE_IN = @CAUSALE_IN,
CAUSALE_OUT = @CAUSALE_OUT
WHERE CODICE = @CODICE
GOTO GO_BACK
END
-- Rientro alla flex chiamante
GO_BACK:
RETURN
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
GRANT EXECUTE ON [dbo].[CUST_CALCOLA_ORE] TO PUBLIC
GO
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !