Dalla versione 4.12 Sigla crea due tabelle (SIGLIC e LICLOG) con campi Timestamp.
Il driver ODBC di Mysql gestisce correttamente questo campo solo dalla versione 3.51.28.
I driver antecedenti provocano un errore nella creazione della tabella.
martedì 29 ottobre 2013
lunedì 14 gennaio 2013
Sql Trigger
Di seguito la versione SQL del trigger per l'assegnazione del registro iva nel campo CIG all'inserimento e variazione di un record di TESDOCUM.
CREATE trigger TESDOCUM_TRG1 on TESDOCUM for INSERT, update
as
update TESDOCUM SET CIG=(select MAX(REGISTRIVA)
from CAUSCONT
where CAUSCONTAB=CODICE
and NUMERO = ( select NUMERO FROM inserted) )
where NUMERO = ( select NUMERO FROM inserted)
venerdì 11 gennaio 2013
Oracle Trigger
Ieri mi sono trovato a dover fare un trigger su Oracle da zero e ho avuto qualche difficoltà sintattica e concettuale.
Dopo aver scritto il mio trigger e compilato correttamente, durante l'uso veniva generato un errore :
ORA-04098: trigger name is invalid and failed re-validation.
Poichè il trigger era compilato correttamente sono dovuto ricorrere al comando "show errors trigger trigger_name;" per avere ulteriori chiarimenti sull'errore.
Una volta risolto il primo problema questo era il corpo del trigger :
update TESDOCUM SET CIG=(select MAX(REGISTRIVA)
from CAUSCONT
where CAUSCONTAB=CODICE
and NUMERO=:new.NUMERO)
where NUMERO=:new.NUMERO
Eseguendo il trigger sono incorso nell'errore
ORA-04091: table AM is mutating, trigger/function may not see it
select MAX(REGISTRIVA) into :new.CIG
from CAUSCONT
where :new.CAUSCONTAB=CODICE;
Dopo aver scritto il mio trigger e compilato correttamente, durante l'uso veniva generato un errore :
ORA-04098: trigger name is invalid and failed re-validation.
Poichè il trigger era compilato correttamente sono dovuto ricorrere al comando "show errors trigger trigger_name;" per avere ulteriori chiarimenti sull'errore.
Una volta risolto il primo problema questo era il corpo del trigger :
update TESDOCUM SET CIG=(select MAX(REGISTRIVA)
from CAUSCONT
where CAUSCONTAB=CODICE
and NUMERO=:new.NUMERO)
where NUMERO=:new.NUMERO
Eseguendo il trigger sono incorso nell'errore
ORA-04091: table AM is mutating, trigger/function may not see it
Era un problema concettuale. Non si può cambiare utilizzare o modificare un record del database mentre lo stesso record è oggetto di trigger.
I database danno accesso ai dati in lettura/scrittura con degli alias.
Alla fine il trigger è il seguente:
create or replace trigger tesdocum_trg1
before insert or update
on TESDOCUM
REFERENCING new AS new
before insert or update
on TESDOCUM
REFERENCING new AS new
FOR EACH ROW
WHEN (NEW.CAUSCONTAB IS NOT NULL)
begin
WHEN (NEW.CAUSCONTAB IS NOT NULL)
begin
select MAX(REGISTRIVA) into :new.CIG
from CAUSCONT
where :new.CAUSCONTAB=CODICE;
end tesdocum_trg1;
martedì 8 gennaio 2013
Variabili di configurazione database DB2
Dopo l'installazione di DB2 è necessario modificare dei valori di configurazione
I seguenti valori sono per le versioni di DB2 antecedenti alla 9
db2 update dbm cfg using QUERY_HEAP_SZ 1000
db2 update db cfg for DITTA1 using APPLHEAPSZ 512
db2 update db cfg for DITTA1 using PCKCACHESZ 128
db2 update db cfg for DITTA1 using BUFFPAGE 1024
db2 update db cfg for DITTA1 using NUM_IOCLEANERS 3
db2 update db cfg for DITTA1 using NUM_IOSERVERS 9
db2 update db cfg for DITTA1 using LOCKLIST 150
db2 update db cfg for DITTA1 using MAXAPPLS
db2 update db cfg for DITTA1 using AVG_APPLS
db2 update db cfg for DITTA1 using LOGFILSIZ 256
db2 update db cfg for DITTA1 using LOGPRIMARY
db2 update db cfg for DITTA1 using LOGSECOND
I seguenti valori sono per le versioni di DB2 uguali o superiori alla 9
db2 update dbm cfg using QUERY_HEAP_SZ 1000
db2 update db cfg for DITTA1 using APPLHEAPSZ 2048
db2 update db cfg for DITTA1 using APPL_MEMORY 40016
db2 update db cfg for DITTA1 using BUFFPAGE 16384
db2 update db cfg for DITTA1 using DBHEAP 600
db2 update db cfg for DITTA1 using NUM_IOCLEANERS 3
db2 update db cfg for DITTA1 using NUM_IOSERVERS 9
db2 update db cfg for DITTA1 using LOCKLIST 300
db2 update db cfg for DITTA1 using SORTHEAP 1024
db2 update db cfg for DITTA1 using AVG_APPLS
db2 update db cfg for DITTA1 using LOGFILSIZ 256
db2 update db cfg for DITTA1 using LOGPRIMARY
db2 update db cfg for DITTA1 using LOGSECOND
db2 update db cfg for DITTA1 using PCKCACHESZ 128
db2 update db cfg for DITTA1 using MAXAPPLS
I seguenti valori sono per le versioni di DB2 antecedenti alla 9
db2 update dbm cfg using QUERY_HEAP_SZ 1000
db2 update db cfg for DITTA1 using APPLHEAPSZ 512
db2 update db cfg for DITTA1 using PCKCACHESZ 128
db2 update db cfg for DITTA1 using BUFFPAGE 1024
db2 update db cfg for DITTA1 using NUM_IOCLEANERS 3
db2 update db cfg for DITTA1 using NUM_IOSERVERS 9
db2 update db cfg for DITTA1 using LOCKLIST 150
db2 update db cfg for DITTA1 using MAXAPPLS
db2 update db cfg for DITTA1 using AVG_APPLS
db2 update db cfg for DITTA1 using LOGFILSIZ 256
db2 update db cfg for DITTA1 using LOGPRIMARY
db2 update db cfg for DITTA1 using LOGSECOND
I seguenti valori sono per le versioni di DB2 uguali o superiori alla 9
db2 update dbm cfg using QUERY_HEAP_SZ 1000
db2 update db cfg for DITTA1 using APPLHEAPSZ 2048
db2 update db cfg for DITTA1 using APPL_MEMORY 40016
db2 update db cfg for DITTA1 using BUFFPAGE 16384
db2 update db cfg for DITTA1 using DBHEAP 600
db2 update db cfg for DITTA1 using NUM_IOCLEANERS 3
db2 update db cfg for DITTA1 using NUM_IOSERVERS 9
db2 update db cfg for DITTA1 using LOCKLIST 300
db2 update db cfg for DITTA1 using SORTHEAP 1024
db2 update db cfg for DITTA1 using AVG_APPLS
db2 update db cfg for DITTA1 using LOGFILSIZ 256
db2 update db cfg for DITTA1 using LOGPRIMARY
db2 update db cfg for DITTA1 using LOGSECOND
db2 update db cfg for DITTA1 using PCKCACHESZ 128
db2 update db cfg for DITTA1 using MAXAPPLS
Iscriviti a:
Post (Atom)