Sto facendo un progetto per l'universita per la gestione di una concessionaria. Per gestire i vincoli di integrità dinamici dobbiamo utilizzare i trigger in Oracle 10g
VINCOLO D'INTEGRITA:
Se il numero di rate è:
- compreso tra 12 e 24, allora il tasso di interesse sarà pari al 5%
- compreso tra 24 e 48, allora il tasso di interesse sarà pari al 7%
- superiore a 48, allora il tasso di interesse sarà pari al 9%
ENTITA RATEIZZAZIONE: (è composta da questi campi)
CODICE
CODICE_SOCIETA_FINANZIARIA
TASSO_D_INTERESSE
NUMERO_RATE
Questo è il codice per la creazione di RATEIZZAZIONE
questo è il codice per il popolamento di RATEIZZAZIONEcodice:CREATE TABLE RATEIZZAZIONE ( CODICE VARCHAR2(7) CONSTRAINT PK_RATEIZZAZIONE PRIMARY KEY, CODICE_SOCIETA_FINANZIARIA VARCHAR2(7) NOT NULL, TASSO_D_INTERESSE NUMBER CHECK (TASSO_D_INTERESSE BETWEEN 5 AND 10), NUMERO_RATE NUMBER CHECK (NUMERO_RATE BETWEEN 12 AND 61), CONSTRAINT FK_RATEIZZAZIONE_PAGAMENTO FOREIGN KEY (CODICE) REFERENCES PAGAMENTO(CODICE), CONSTRAINT FK_RATEIZZAZIONE_FINANZIARIA FOREIGN KEY (CODICE_SOCIETA_FINANZIARIA) REFERENCES SOCIETA_FINANZIARIA(CODICE) );
codice:INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM00','SOFIN00',12); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM01','SOFIN00',24); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM02','SOFIN01',36); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM03','SOFIN01',24); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM04','SOFIN02',60); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM05','SOFIN03',60); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM06','SOFIN04',48); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM07','SOFIN05',36); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM08','SOFIN06',24); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM09','SOFIN07',12); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM10','SOFIN08',24); INSERT INTO RATEIZZAZIONE(CODICE,CODICE_SOCIETA_FINANZIARIA,NUMERO_RATE) VALUES ('PAGAM11','SOFIN09',12);
Ieri andai dal prof per avere delucidazioni in merito, mi dettò il seguente trigger:
codice:CREATE OR REPLACE TRIGGER TRIGGER_RATE AFTER INSERT ON RATEIZZAZIONE FOR EACH ROW BEGIN SELECT NUMERO_RATE FROM RATEIZZAZIONE; IF (:NEW.NUMERO_RATE>11 AND :NEW.NUMERO_RATE<25) THEN :NEW.TASSO_D_INTERESSE:=5; END IF; END; /
Praticamente, noi popoliamo la tabella RATEIZZAZIONE, rimanendo NULL il campo TASSO D'INTERESSE. Vorremmo che il trigger modificasse quel campo (tasso_d_interesse) in base al valore del campo NUMERO RATE (cioe andando a modificare il "null" e mettendoci i valori 5, 7 o 9). Cioe vorremmo che popolasse il campo TASSO_D_INTERESSE della tabella RATEIZZAZIONE.

Rispondi quotando