1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
|
REM START PERSONNES
CREATE TABLE ."PERSONNES"
( "PERSONNE_ID" NUMBER(10,0) NOT NULL ENABLE,
"NOM" VARCHAR2(100 BYTE) NOT NULL ENABLE,
"PRENOM" VARCHAR2(100 BYTE) NOT NULL ENABLE,
"ADRESSE" VARCHAR2(200 BYTE),
"CODE_POSTAL" VARCHAR2(10 BYTE),
"VILLE" VARCHAR2(200 BYTE),
"TELEPHONE" VARCHAR2(20 BYTE),
"GSM" VARCHAR2(15 BYTE),
"EMAIL" VARCHAR2(150 BYTE),
"DATE_NAISSANCE" DATE,
"NUMERO_MEMBRE" NUMBER(10,0) DEFAULT -1,
"TYPE_PERSONNE" VARCHAR2(10 BYTE),
"CARTE_IDENTITE" VARCHAR2(20 BYTE),
CONSTRAINT "PERSONNES_PK" PRIMARY KEY ("PERSONNE_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;
REM END PERSONNES
REM START MUTATING_TRIGGER_ON_PERSONNE
CREATE OR REPLACE TRIGGER "MUTATING_TRIGGER_ON_PERSONNE"
after insert on personnes
for each row
begin
MUTATING_PACKAGE.personne_id := :new.personne_id;
end;
/
ALTER TRIGGER "MUTATING_TRIGGER_ON_PERSONNE" ENABLE;
REM END MUTATING_TRIGGER_ON_PERSONNE
REM START PERSONNES_TRIGGER_ON_INSERT
CREATE OR REPLACE TRIGGER "PERSONNES_TRIGGER_ON_INSERT"
AFTER
insert on "PERSONNES"
begin
update personnes set numero_membre =-1 where personne_id = mutating_package.personne_id;
end;
/
ALTER TRIGGER "PERSONNES_TRIGGER_ON_INSERT" ENABLE;
REM END PERSONNES_TRIGGER_ON_INSERT
REM START PERSONNES_TRIGGER_ON_DELETE
CREATE OR REPLACE TRIGGER "PERSONNES_TRIGGER_ON_DELETE"
AFTER
delete on "PERSONNES"
declare
cursor cur is select personne_id from personnes where numero_membre > 0 order by numero_membre;
v_personne_id number;
v_numero_membre number :=1;
v_counter number :=0;
v_query varchar2(4000);
begin
for rec_personne in cur loop
v_personne_id := rec_personne.personne_id;
update personnes set numero_membre = v_numero_membre where personne_id = v_personne_id;
v_numero_membre := v_numero_membre + 1;
end loop;
end;
/
ALTER TRIGGER "PERSONNES_TRIGGER_ON_DELETE" ENABLE;
REM END PERSONNES_TRIGGER_ON_DELETE
/
REM START COTISATIONS
CREATE TABLE "COTISATIONS"
( "ANNEE_COTISATION" VARCHAR2(4 BYTE) NOT NULL ENABLE,
"MONTANT_COTISATION" NUMBER(10,2) NOT NULL ENABLE,
CONSTRAINT "COTISATIONS_PK" PRIMARY KEY ("ANNEE_COTISATION")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;
REM END COTISATIONS
/
REM START PERSONNES_COTISATIONS
CREATE TABLE "PERSONNES_COTISATIONS"
( "PERSONNE_ID" NUMBER(10,0) NOT NULL ENABLE,
"PAYE" NUMBER(1,0) NOT NULL ENABLE,
"ANNEE_COTISATION" VARCHAR2(4 BYTE) NOT NULL ENABLE,
"PERSONNES_COTISATIONS_ID" NUMBER,
"DATE_PAIEMENT" DATE,
CONSTRAINT "PERSONNES_COTISATIONS_PER_FK1" FOREIGN KEY ("PERSONNE_ID")
REFERENCES "STANDARD_NAAST"."PERSONNES" ("PERSONNE_ID") ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;
REM END PERSONNES_COTISATIONS
REM START INSERT_SEQ
CREATE OR REPLACE TRIGGER "INSERT_SEQ"
BEFORE INSERT
ON PERSONNES_COTISATIONS
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
NEW_SEQUENCE_NUMBER NUMBER;
BEGIN
SELECT PERSONNES_COTISATIONS_SEQ.NEXTVAL
INTO NEW_SEQUENCE_NUMBER
FROM DUAL;
:NEW.PERSONNES_COTISATIONS_ID := NEW_SEQUENCE_NUMBER;
END;
/
ALTER TRIGGER "INSERT_SEQ" ENABLE;
REM END STANDARD_NAAST INSERT_SEQ
REM START STANDARD_NAAST TRIGGER_INSERT_ON_COTISATIONS
CREATE OR REPLACE TRIGGER "STANDARD_NAAST"."TRIGGER_INSERT_ON_COTISATIONS"
AFTER INSERT ON PERSONNES_COTISATIONS
declare
v_personne_id number;
v_numero_membre number;
v_numero_membre_actual number;
BEGIN
select personne_id into v_personne_id from personnes_cotisations where personnes_cotisations_id = create_personnes_cotisations.personnes_cotisations_id ;
select numero_membre into v_numero_membre_actual from personnes where personne_id = create_personnes_cotisations.personnes_cotisations_id ;
if v_numero_membre_actual = -1 then
select max(numero_membre) + 1 into v_numero_membre from personnes;
update personnes set numero_membre = v_numero_membre where personne_id = create_personnes_cotisations.personnes_cotisations_id;
end if;
END;
/
ALTER TRIGGER "TRIGGER_INSERT_ON_COTISATIONS" ENABLE;
REM END TRIGGER_INSERT_ON_COTISATIONS
REM START FIRST_TRIGGER_PERS_COT
CREATE OR REPLACE TRIGGER "FIRST_TRIGGER_PERS_COT"
after insert on personnes_cotisations
for each row
begin
CREATE_PERSONNES_COTISATIONS.personnes_cotisations_id := :new.personnes_cotisations_id;
end;
/
ALTER TRIGGER "FIRST_TRIGGER_PERS_COT" ENABLE;
REM END FIRST_TRIGGER_PERS_COT
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (252,'DANIEL','Martine',1);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (253,'BOTTEMANNE','Richard',2);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (254,'SLUYS ','Léon',3);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (255,'POLART','Pierre',4);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (256,'PERREMAN','Michel',5);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (257,'EHRLER ','Chantal',6);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (258,'LETOT','Henri',7);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (259,'MAQUESTIAU ','Jean-Pierre',8);
insert into personnes (PERSONNE_ID, NOM, PRENOM, NUMERO_MEMBRE) values (260,'SABIAU ','Irène',9);
insert into cotisations (ANNEE_COTISATION, MONTANT_COTISATION) values (2008,13);
insert into cotisations (ANNEE_COTISATION, MONTANT_COTISATION) values (2007,12.5);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (252,1,2007,205,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (253,1,2007,206,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (254,1,2007,207,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (255,1,2007,208,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (256,1,2007,209,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (257,1,2007,210,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (258,1,2007,211,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (259,1,2007,212,sysdate);
insert into personnes (PERSONNE_ID, PAYE, ANNEE_COTISATION, PERSONNES_COTISATIONS_ID,DATE_PAIEMENT) values (260,1,2007,213,sysdate);
commit;
create or replace PACKAGE create_personnes_cotisations AS
personnes_cotisations_id personnes_cotisations.personnes_cotisations_id%TYPE;
END;
create or replace PACKAGE mutating_package AS
personne_id personnes.personne_id%TYPE;
END; |
Partager