extracted objects
This commit is contained in:
31
docs/triggers/ADD_COD_STEP.md
Normal file
31
docs/triggers/ADD_COD_STEP.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# ADD_COD_STEP
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: TB_TIPI_MAT
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."ADD_COD_STEP"
|
||||
BEFORE INSERT ON TB_TIPI_MAT
|
||||
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.cod_step IS NULL THEN
|
||||
select max(cod_step)+1
|
||||
into :NEW.cod_step
|
||||
from tb_tipi_mat
|
||||
where cod_step not in (9999999, -1, 0);
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
28
docs/triggers/ARTICOLI_DET_REGOLE_TRG.md
Normal file
28
docs/triggers/ARTICOLI_DET_REGOLE_TRG.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# ARTICOLI_DET_REGOLE_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: ARTICOLI_DET_REGOLE
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."ARTICOLI_DET_REGOLE_TRG"
|
||||
BEFORE INSERT ON ARTICOLI_DET_REGOLE
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT ARTICOLI_DET_REGOLE_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
21
docs/triggers/BI_GL_SCHEMA_CHANGES.md
Normal file
21
docs/triggers/BI_GL_SCHEMA_CHANGES.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# BI_GL_SCHEMA_CHANGES
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: GL_SCHEMA_CHANGES
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."BI_GL_SCHEMA_CHANGES"
|
||||
before insert on gl_schema_changes
|
||||
for each row
|
||||
BEGIN
|
||||
select gl_schema_changes_seq.nextval into :new.id from dual;
|
||||
:NEW.VERSION_NAME := :NEW.VYEAR||'.'||:NEW.VMONTH||'.'||:NEW.VMAJOR||'.'||:NEW.VMINOR||:NEW.VTYPE;
|
||||
end;
|
||||
|
||||
```
|
||||
27
docs/triggers/CLIENTI_TRG.md
Normal file
27
docs/triggers/CLIENTI_TRG.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# CLIENTI_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: CLIENTI
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."CLIENTI_TRG"
|
||||
BEFORE INSERT ON CLIENTI
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT CLIENTI_SEQ2.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
22
docs/triggers/EVENTI_ACCONTI_TRG.md
Normal file
22
docs/triggers/EVENTI_ACCONTI_TRG.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# EVENTI_ACCONTI_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_ACCONTI
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_ACCONTI_TRG"
|
||||
BEFORE INSERT ON EVENTI_ACCONTI
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT EVENTI_ACCONTI_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
```
|
||||
42
docs/triggers/EVENTI_AI_TRG.md
Normal file
42
docs/triggers/EVENTI_AI_TRG.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# EVENTI_AI_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: AFTER EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_AI_TRG"
|
||||
AFTER INSERT ON EVENTI
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
|
||||
if inserting then
|
||||
|
||||
-- execute immediate 'alter trigger "APCB"."EVENTI_DET_OSPITI_TRG_AI" disable';
|
||||
|
||||
--default su righe ospiti
|
||||
INSERT INTO eventi_det_ospiti (
|
||||
id_evento,
|
||||
cod_tipo_ospite,
|
||||
numero,
|
||||
note,
|
||||
ordine
|
||||
)
|
||||
SELECT :NEW.ID, 5, 0, '', 2 FROM DUAL
|
||||
UNION
|
||||
SELECT :NEW.ID, 6, 0, '', 3 FROM DUAL
|
||||
UNION
|
||||
SELECT :NEW.ID, 7, 0, '', 4 FROM DUAL
|
||||
UNION
|
||||
SELECT :NEW.ID, 8, 0, '', 1 FROM DUAL;
|
||||
|
||||
end if;
|
||||
|
||||
END;
|
||||
|
||||
```
|
||||
27
docs/triggers/EVENTI_ALLEG_TRG.md
Normal file
27
docs/triggers/EVENTI_ALLEG_TRG.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# EVENTI_ALLEG_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_ALLEG
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_ALLEG_TRG"
|
||||
BEFORE INSERT ON EVENTI_ALLEG
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT EVENTI_ALLEG_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
22
docs/triggers/EVENTI_ALTRICOSTI_TRG.md
Normal file
22
docs/triggers/EVENTI_ALTRICOSTI_TRG.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# EVENTI_ALTRICOSTI_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_ALTRICOSTI
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_ALTRICOSTI_TRG"
|
||||
BEFORE INSERT ON eventi_altricosti
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT eventi_altricosti_seq.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
```
|
||||
27
docs/triggers/EVENTI_DET_DEGUST_TRG.md
Normal file
27
docs/triggers/EVENTI_DET_DEGUST_TRG.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# EVENTI_DET_DEGUST_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_DET_DEGUST
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_DET_DEGUST_TRG"
|
||||
BEFORE INSERT ON EVENTI_DET_DEGUST
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT EVENTI_DET_DEGUST_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
65
docs/triggers/EVENTI_DET_OSPITI_TRG_AI.md
Normal file
65
docs/triggers/EVENTI_DET_OSPITI_TRG_AI.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# EVENTI_DET_OSPITI_TRG_AI
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_DET_OSPITI
|
||||
- **Evento**: UPDATE
|
||||
- **Tipo**: AFTER EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_DET_OSPITI_TRG_AI"
|
||||
--AFTER INSERT OR UPDATE OR DELETE ON EVENTI_DET_OSPITI
|
||||
AFTER UPDATE ON EVENTI_DET_OSPITI
|
||||
FOR EACH ROW
|
||||
|
||||
-- solo update, tutti i tipi ospiti vengono inseriti con l'inserimento della testata dell'evento con QTA def = 0
|
||||
|
||||
declare
|
||||
|
||||
v_cod_art varchar2(10);
|
||||
v_coeff number;
|
||||
v_ospiti number;
|
||||
v_azione varchar2(10);
|
||||
v_id_evento number;
|
||||
v_count number;
|
||||
|
||||
BEGIN
|
||||
|
||||
v_azione := '';
|
||||
v_id_evento := nvl(:NEW.ID_EVENTO,:OLD.ID_EVENTO);
|
||||
|
||||
--RAISE_APPLICATION_ERROR(-20001,'ididididididid: ' + to_char('hhhhhhhhhhh') );
|
||||
|
||||
if DELETING THEN
|
||||
--RAISE_APPLICATION_ERROR(-20000, ':NEW.NUMERO' || :NEW.NUMERO || ':OLD.NUMERO' || :OLD.NUMERO);
|
||||
v_azione := 'DELETE';
|
||||
v_id_evento := :OLD.ID_EVENTO;
|
||||
elsif INSERTING THEN
|
||||
v_azione := 'INSERT';
|
||||
v_id_evento := :NEW.ID_EVENTO;
|
||||
END IF;
|
||||
--/*
|
||||
--Controllo esistenza id testata (caso default righe dett)
|
||||
-- v_count := 0;
|
||||
-- select count(*) into v_count
|
||||
-- from eventi where id = :NEW.ID_EVENTO;
|
||||
|
||||
-- if v_count > 0 then
|
||||
|
||||
--RAISE_APPLICATION_ERROR(-20000,'id: ' + to_char(v_id_evento) + ' :NEW.NUMERO' || to_char(:NEW.NUMERO) || ' :OLD.NUMERO' || to_char(:OLD.NUMERO) + ' azione: ' + v_azione);
|
||||
--Calcola la qta tot ospiti di Testata:
|
||||
--EVENTI_AGGIORNA_N_OSPITI(v_id_evento,:NEW.NUMERO,:OLD.NUMERO,v_azione);
|
||||
|
||||
-- end if;
|
||||
--*/
|
||||
exception when others
|
||||
then
|
||||
RAISE_APPLICATION_ERROR(-20000, 'Errore: ' || SQLCODE || ' - ' || SUBSTR(SQLERRM, 1 , 64));
|
||||
|
||||
END;
|
||||
|
||||
|
||||
```
|
||||
32
docs/triggers/EVENTI_DET_PREL_QTA_TOT_TRG.md
Normal file
32
docs/triggers/EVENTI_DET_PREL_QTA_TOT_TRG.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# EVENTI_DET_PREL_QTA_TOT_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_DET_PREL
|
||||
- **Evento**: UPDATE
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_DET_PREL_QTA_TOT_TRG"
|
||||
BEFORE UPDATE ON EVENTI_DET_PREL
|
||||
FOR EACH ROW
|
||||
|
||||
BEGIN
|
||||
|
||||
:NEW.QTA := :NEW.QTA_APE + :NEW.QTA_SEDU + :NEW.QTA_BUFDOL + :NEW.QTA_MAN_APE + :NEW.QTA_MAN_SEDU + :NEW.QTA_MAN_BUFDOL;
|
||||
|
||||
exception when others
|
||||
then
|
||||
RAISE_APPLICATION_ERROR(-20000, 'Errore in aggiornamento QTA da prelevare: ' || SQLCODE || ' - ' || SUBSTR(SQLERRM, 1 , 64));
|
||||
|
||||
return;
|
||||
|
||||
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
23
docs/triggers/EVENTI_DET_PREL_TRG.md
Normal file
23
docs/triggers/EVENTI_DET_PREL_TRG.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# EVENTI_DET_PREL_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_DET_PREL
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_DET_PREL_TRG"
|
||||
before INSERT ON EVENTI_DET_PREL
|
||||
FOR EACH ROW
|
||||
declare
|
||||
BEGIN
|
||||
IF INSERTING THEN
|
||||
SELECT EVENTI_DET_PREL_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
```
|
||||
49
docs/triggers/EVENTI_DET_RIS_TRG.md
Normal file
49
docs/triggers/EVENTI_DET_RIS_TRG.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# EVENTI_DET_RIS_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI_DET_RIS
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."EVENTI_DET_RIS_TRG"
|
||||
BEFORE INSERT ON EVENTI_DET_RIS
|
||||
FOR EACH ROW
|
||||
|
||||
DECLARE
|
||||
|
||||
v_costo_orario number;
|
||||
v_costo_prestazione number;
|
||||
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT EVENTI_DET_RIS_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
|
||||
/*
|
||||
--default su costo
|
||||
begin
|
||||
select nvl(costo_orario,0), nvl(costo_prestazione,0)
|
||||
into v_costo_orario, v_costo_prestazione
|
||||
from risorse r
|
||||
where r.id = :NEW.ID_RISORSA;
|
||||
|
||||
:NEW.COSTO := :NEW.ORE_LAV * v_costo_orario;
|
||||
|
||||
exception when others
|
||||
then RAISE_APPLICATION_ERROR(-20000, 'Errore: Inserimento costo risorsa');
|
||||
end;
|
||||
*/
|
||||
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
34
docs/triggers/EVENTI_TRG.md
Normal file
34
docs/triggers/EVENTI_TRG.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# EVENTI_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: EVENTI
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "EVENTI_TRG"
|
||||
BEFORE INSERT ON EVENTI
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF INSERTING THEN
|
||||
SELECT EVENTI_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
|
||||
if inserting or updating then
|
||||
--aggiornamento data_doc (data redazione)
|
||||
:NEW.DATA_DOC := sysdate;
|
||||
end if;
|
||||
|
||||
if inserting THEN
|
||||
:NEW.STATO := nvl(:NEW.STATO, 100);
|
||||
IF nvl(:NEW.vers_number, 0) = 0 THEN
|
||||
:NEW.vers_token := DBMS_RANDOM.STRING ('A' , DBMS_RANDOM.VALUE (64, 255));
|
||||
END IF;
|
||||
end if;
|
||||
|
||||
END;
|
||||
```
|
||||
27
docs/triggers/LOCATION_TRG.md
Normal file
27
docs/triggers/LOCATION_TRG.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# LOCATION_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: LOCATION
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."LOCATION_TRG"
|
||||
BEFORE INSERT ON LOCATION
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT LOCATION_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
33
docs/triggers/ON_DELETE_REORDER.md
Normal file
33
docs/triggers/ON_DELETE_REORDER.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# ON_DELETE_REORDER
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: TB_TIPI_MAT
|
||||
- **Evento**: DELETE
|
||||
- **Tipo**: AFTER EACH ROW
|
||||
- **Stato**: DISABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."ON_DELETE_REORDER"
|
||||
after DELETE ON TB_TIPI_MAT
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
|
||||
FOR TP IN (
|
||||
SELECT COD_TIPO, COD_STEP - 1 AS COD_STEP_NEW
|
||||
FROM TB_TIPI_MAT T
|
||||
WHERE COD_STEP > :OLD.COD_STEP
|
||||
AND COD_STEP NOT IN (-2, -1, 0, 9999999)
|
||||
)LOOP
|
||||
UPDATE TB_TIPI_MAT
|
||||
SET COD_STEP = TP.COD_STEP_NEW
|
||||
WHERE COD_TIPO = TP.COD_TIPO;
|
||||
END LOOP;
|
||||
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
173
docs/triggers/README.md
Normal file
173
docs/triggers/README.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# Triggers Database
|
||||
|
||||
Questa cartella contiene la documentazione di tutti i 19 triggers del database (esclusi quelli di sistema APEX).
|
||||
|
||||
## Triggers Generazione ID
|
||||
|
||||
Questi triggers generano automaticamente gli ID tramite sequence.
|
||||
|
||||
| Trigger | Tabella | Sequence | Evento |
|
||||
|---------|---------|----------|--------|
|
||||
| [EVENTI_TRG](EVENTI_TRG.md) | EVENTI | EVENTI_SEQ | BEFORE INSERT |
|
||||
| [EVENTI_DET_PREL_TRG](EVENTI_DET_PREL_TRG.md) | EVENTI_DET_PREL | EVENTI_DET_PREL_SEQ | BEFORE INSERT |
|
||||
| [EVENTI_DET_RIS_TRG](EVENTI_DET_RIS_TRG.md) | EVENTI_DET_RIS | EVENTI_DET_RIS_SEQ | BEFORE INSERT |
|
||||
| [EVENTI_DET_DEGUST_TRG](EVENTI_DET_DEGUST_TRG.md) | EVENTI_DET_DEGUST | EVENTI_DET_DEGUST_SEQ | BEFORE INSERT |
|
||||
| [EVENTI_ACCONTI_TRG](EVENTI_ACCONTI_TRG.md) | EVENTI_ACCONTI | EVENTI_ACCONTI_SEQ | BEFORE INSERT |
|
||||
| [EVENTI_ALTRICOSTI_TRG](EVENTI_ALTRICOSTI_TRG.md) | EVENTI_ALTRICOSTI | EVENTI_ALTRICOSTI_SEQ | BEFORE INSERT |
|
||||
| [EVENTI_ALLEG_TRG](EVENTI_ALLEG_TRG.md) | EVENTI_ALLEG | EVENTI_ALLEG_SEQ | BEFORE INSERT |
|
||||
| [CLIENTI_TRG](CLIENTI_TRG.md) | CLIENTI | CLIENTI_SEQ2 | BEFORE INSERT |
|
||||
| [LOCATION_TRG](LOCATION_TRG.md) | LOCATION | LOCATION_SEQ | BEFORE INSERT |
|
||||
| [RISORSE_TRG](RISORSE_TRG.md) | RISORSE | RISORSE_SEQ | BEFORE INSERT |
|
||||
| [ARTICOLI_DET_REGOLE_TRG](ARTICOLI_DET_REGOLE_TRG.md) | ARTICOLI_DET_REGOLE | ARTICOLI_DET_REGOLE_SEQ | BEFORE INSERT |
|
||||
| [TB_TIPI_PASTO_TRG](TB_TIPI_PASTO_TRG.md) | TB_TIPI_PASTO | TB_TIPI_PASTO_SEQ | BEFORE INSERT |
|
||||
|
||||
## Triggers Business Logic
|
||||
|
||||
| Trigger | Tabella | Descrizione |
|
||||
|---------|---------|-------------|
|
||||
| [EVENTI_TRG](EVENTI_TRG.md) | EVENTI | Inizializza STATO=100, DATA_DOC, VERS_TOKEN |
|
||||
| [EVENTI_AI_TRG](EVENTI_AI_TRG.md) | EVENTI | Crea 4 record ospiti default (AFTER INSERT) |
|
||||
| [EVENTI_DET_OSPITI_TRG_AI](EVENTI_DET_OSPITI_TRG_AI.md) | EVENTI_DET_OSPITI | Gestione aggiornamento ospiti |
|
||||
| [EVENTI_DET_PREL_QTA_TOT_TRG](EVENTI_DET_PREL_QTA_TOT_TRG.md) | EVENTI_DET_PREL | Calcola QTA totale su UPDATE |
|
||||
|
||||
## Triggers Ordinamento
|
||||
|
||||
| Trigger | Tabella | Descrizione |
|
||||
|---------|---------|-------------|
|
||||
| [ADD_COD_STEP](ADD_COD_STEP.md) | TB_TIPI_MAT | Assegna COD_STEP progressivo |
|
||||
| [ON_DELETE_REORDER](ON_DELETE_REORDER.md) | TB_TIPI_MAT | Riordina COD_STEP dopo DELETE |
|
||||
|
||||
## Triggers Sistema
|
||||
|
||||
| Trigger | Tabella | Descrizione |
|
||||
|---------|---------|-------------|
|
||||
| [BI_GL_SCHEMA_CHANGES](BI_GL_SCHEMA_CHANGES.md) | GL_SCHEMA_CHANGES | Log modifiche schema |
|
||||
| [XLIB_LOGS_BI_TRG](XLIB_LOGS_BI_TRG.md) | XLIB_LOGS | Timestamp log |
|
||||
|
||||
## Dettaglio Triggers Critici
|
||||
|
||||
### EVENTI_TRG
|
||||
|
||||
```sql
|
||||
BEFORE INSERT ON EVENTI FOR EACH ROW
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
1. Genera ID da sequence
|
||||
2. Imposta `DATA_DOC = SYSDATE`
|
||||
3. Se INSERT:
|
||||
- `STATO = NVL(:NEW.STATO, 100)`
|
||||
- Se `VERS_NUMBER = 0`: genera `VERS_TOKEN` random
|
||||
|
||||
### EVENTI_AI_TRG
|
||||
|
||||
```sql
|
||||
AFTER INSERT ON EVENTI FOR EACH ROW
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
Inserisce automaticamente i 4 tipi ospiti:
|
||||
- COD_TIPO_OSPITE = 8 (Adulti), ORDINE = 1
|
||||
- COD_TIPO_OSPITE = 5 (Kinder), ORDINE = 2
|
||||
- COD_TIPO_OSPITE = 6 (Baby), ORDINE = 3
|
||||
- COD_TIPO_OSPITE = 7 (Staff), ORDINE = 4
|
||||
|
||||
### EVENTI_DET_PREL_QTA_TOT_TRG
|
||||
|
||||
```sql
|
||||
BEFORE UPDATE ON EVENTI_DET_PREL FOR EACH ROW
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
```sql
|
||||
:NEW.QTA := :NEW.QTA_APE + :NEW.QTA_SEDU + :NEW.QTA_BUFDOL
|
||||
+ :NEW.QTA_MAN_APE + :NEW.QTA_MAN_SEDU + :NEW.QTA_MAN_BUFDOL
|
||||
```
|
||||
|
||||
## Migrazione .NET
|
||||
|
||||
### Sostituzione Sequence → Identity
|
||||
|
||||
```csharp
|
||||
// Entity Framework Configuration
|
||||
modelBuilder.Entity<Evento>()
|
||||
.Property(e => e.Id)
|
||||
.UseIdentityColumn();
|
||||
```
|
||||
|
||||
### Sostituzione Trigger → SaveChanges Interceptor
|
||||
|
||||
```csharp
|
||||
public class EventiSaveChangesInterceptor : SaveChangesInterceptor
|
||||
{
|
||||
public override ValueTask<InterceptionResult<int>> SavingChangesAsync(
|
||||
DbContextEventData eventData,
|
||||
InterceptionResult<int> result,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var context = eventData.Context;
|
||||
|
||||
foreach (var entry in context.ChangeTracker.Entries<Evento>())
|
||||
{
|
||||
if (entry.State == EntityState.Added)
|
||||
{
|
||||
// Logica EVENTI_TRG
|
||||
entry.Entity.Stato ??= 100;
|
||||
entry.Entity.DataDoc = DateTime.Now;
|
||||
if (entry.Entity.VersNumber == 0)
|
||||
{
|
||||
entry.Entity.VersToken = GenerateRandomToken();
|
||||
}
|
||||
}
|
||||
else if (entry.State == EntityState.Modified)
|
||||
{
|
||||
entry.Entity.DataDoc = DateTime.Now;
|
||||
}
|
||||
}
|
||||
|
||||
// Logica EVENTI_DET_PREL_QTA_TOT_TRG
|
||||
foreach (var entry in context.ChangeTracker.Entries<EventiDetPrel>())
|
||||
{
|
||||
if (entry.State == EntityState.Modified || entry.State == EntityState.Added)
|
||||
{
|
||||
entry.Entity.Qta = entry.Entity.CalcolaQuantitaTotale();
|
||||
}
|
||||
}
|
||||
|
||||
return base.SavingChangesAsync(eventData, result, cancellationToken);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Creazione Ospiti Default
|
||||
|
||||
```csharp
|
||||
public override async Task<int> SaveChangesAsync(CancellationToken ct = default)
|
||||
{
|
||||
var newEvents = ChangeTracker.Entries<Evento>()
|
||||
.Where(e => e.State == EntityState.Added)
|
||||
.Select(e => e.Entity)
|
||||
.ToList();
|
||||
|
||||
var result = await base.SaveChangesAsync(ct);
|
||||
|
||||
// Logica EVENTI_AI_TRG
|
||||
foreach (var evento in newEvents)
|
||||
{
|
||||
var tipiOspiti = new[] { (8, 1), (5, 2), (6, 3), (7, 4) };
|
||||
foreach (var (tipo, ordine) in tipiOspiti)
|
||||
{
|
||||
EventiDetOspiti.Add(new EventiDetOspiti
|
||||
{
|
||||
IdEvento = evento.Id,
|
||||
CodTipoOspite = tipo.ToString(),
|
||||
Numero = 0,
|
||||
Ordine = ordine
|
||||
});
|
||||
}
|
||||
await base.SaveChangesAsync(ct);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
```
|
||||
27
docs/triggers/RISORSE_TRG.md
Normal file
27
docs/triggers/RISORSE_TRG.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# RISORSE_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: RISORSE
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."RISORSE_TRG"
|
||||
BEFORE INSERT ON RISORSE
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
<<COLUMN_SEQUENCES>>
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT RISORSE_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END COLUMN_SEQUENCES;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
```
|
||||
21
docs/triggers/TB_TIPI_PASTO_TRG.md
Normal file
21
docs/triggers/TB_TIPI_PASTO_TRG.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# TB_TIPI_PASTO_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: TB_TIPI_PASTO
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER TB_TIPI_PASTO_TRG
|
||||
BEFORE INSERT ON TB_TIPI_PASTO
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF INSERTING AND :NEW.ID IS NULL THEN
|
||||
SELECT TB_TIPI_PASTO_SEQ.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
|
||||
END IF;
|
||||
END;
|
||||
```
|
||||
28
docs/triggers/XLIB_LOGS_BI_TRG.md
Normal file
28
docs/triggers/XLIB_LOGS_BI_TRG.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# XLIB_LOGS_BI_TRG
|
||||
|
||||
## Informazioni
|
||||
|
||||
- **Tabella**: XLIB_LOGS
|
||||
- **Evento**: INSERT
|
||||
- **Tipo**: BEFORE EACH ROW
|
||||
- **Stato**: ENABLED
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
TRIGGER "APOLLINARECATERINGPROD"."XLIB_LOGS_BI_TRG"
|
||||
BEFORE INSERT
|
||||
ON XLIB_LOGS
|
||||
REFERENCING NEW AS NEW OLD AS OLD
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF :NEW.log_id IS NULL
|
||||
THEN
|
||||
SELECT XLIB_SEQ.NEXTVAL
|
||||
INTO :NEW.log_id
|
||||
FROM DUAL;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user