voila mon script SQL
[fixed]SET ECHO OFF
SET FEEDBACK OFF
SPOOL InpresPharma.log
-- Dropage des Tables
------------------------
PROMPT Suppression des tables
DROP TABLE LIGNES_COMMANDES;
DROP TABLE MEDICAMENTS;
DROP TABLE FIRMES;
DROP TABLE COMMANDES;
DROP TABLE PATIENTS;
DROP TABLE MUTUELLES;
PROMPT DONE
-- Dropage des Séquences
--------------------------
PROMPT Suppression des sequences
DROP SEQUENCE SEQ_MUTUELLE;
DROP SEQUENCE SEQ_COMMANDE;
DROP SEQUENCE SEQ_FIRME;
DROP SEQUENCE SEQ_MEDICAMENT;
PROMPT DONE
-- Créations des Tables
-------------------------
PROMPT Creation des tables
PROMPT \-> MUTUELLES
CREATE TABLE MUTUELLES
(
REF_MUTUELLE NUMBER(10) NOT NULL,
CONSTRAINT CPMUTUELLE PRIMARY KEY (REF_MUTUELLE),
NOM_MUTUELLE VARCHAR2(50) NOT NULL
);
PROMPT ...DONE
PROMPT \-> PATIENTS
CREATE TABLE PATIENTS
(
NUM_MUTUELLE NUMBER(10) NOT NULL,
CONSTRAINT CPPATIENT PRIMARY KEY (NUM_MUTUELLE),
NOM_PATIENT VARCHAR2(30) NOT NULL,
PRENOM_PATIENT VARCHAR2(30) NOT NULL,
SEXE_PATIENT VARCHAR2(1), CONSTRAINT CHEK_SEXE CHECK (SEXE_PATIENT IN ('M','F')),
DATENAISS_PATIENT DATE,
GSM_PATIENT VARCHAR(10),
REF_MUTUELLE NUMBER(10),
CONSTRAINT CEMUTUELLE FOREIGN KEY (REF_MUTUELLE) REFERENCES MUTUELLES (REF_MUTUELLE)
);
PROMPT ...DONE
PROMPT \-> COMMANDES
CREATE TABLE COMMANDES
(
REF_COMMANDE NUMBER(10) NOT NULL,
CONSTRAINT CPCOMMANDE PRIMARY KEY (REF_COMMANDE),
DATE_COMMANDE DATE NOT NULL,
NUM_MUTUELLE NUMBER(10),
CONSTRAINT CECOMMANDE FOREIGN KEY (NUM_MUTUELLE) REFERENCES PATIENTS (NUM_MUTUELLE)
);
PROMPT ...DONE
PROMPT \-> FIRMES
CREATE TABLE FIRMES
(
REF_FIRME NUMBER(10) NOT NULL,
CONSTRAINT CPFIRME PRIMARY KEY (REF_FIRME),
NOM_FIRME VARCHAR2(50) NOT NULL
);
PROMPT ...DONE
PROMPT \-> MEDICAMENTS
CREATE TABLE MEDICAMENTS
(
REF_MEDICAMENT NUMBER(10) NOT NULL, CONSTRAINT CPMEDICAMENT PRIMARY KEY (REF_MEDICAMENT),
DENOMINATION_MEDICAMENT VARCHAR2(50) NOT NULL,
REF_FIRME NUMBER(10),
CONSTRAINT CEFIRME FOREIGN KEY (REF_FIRME) REFERENCES FIRMES (REF_FIRME)
);
PROMPT ...DONE
PROMPT \-> LIGNES_COMMANDES
CREATE TABLE LIGNES_COMMANDES
(
REF_COMMANDE NUMBER(10) NOT NULL,
REF_MEDICAMENT NUMBER(10) NOT NULL,
CONSTRAINT CP_LC PRIMARY KEY (REF_COMMANDE,REF_MEDICAMENT),
CONSTRAINT CE_LC_COM FOREIGN KEY (REF_COMMANDE) REFERENCES COMMANDES(REF_COMMANDE),
CONSTRAINT CE_LC_MED FOREIGN KEY (REF_MEDICAMENT) REFERENCES MEDICAMENTS(REF_MEDICAMENT),
DATE_LIVRAISON DATE NOT NULL,
DATE_PAYEMENT DATE NOT NULL,
QUANTITE_COMMANDE VARCHAR2(10) NOT NULL
);
PROMPT ...DONE
PROMPT DONE
-- Création des Séquences
----------------------------
PROMPT Creation des sequences
CREATE SEQUENCE SEQ_MUTUELLE START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_COMMANDE START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_FIRME START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_MEDICAMENT START WITH 1 INCREMENT BY 1;
PROMPT DONE
PROMPT Insertion de quelques valeurs dans la table 'MUTUELLES'
INSERT INTO MUTUELLES VALUES (1,'F.M.S.S.');
INSERT INTO MUTUELLES VALUES (2,'MUTUELLE CHRETIENNE');
INSERT INTO MUTUELLES VALUES (3,'MUTUELLE LIBRE');
PROMPT DONE
-- Création des Triggers
---------------------------
-- ca fonctionne pas ?!?
PROMPT Creation des Triggers
CREATE OR REPLACE TRIGGER VerifDateNaiss
BEFORE INSERT OR UPDATE OF DATENAISS_PATIENT ON PATIENTS
FOR EACH ROW
WHEN (new.DATENAISS_PATIENT >= SYSDATE) -- :new ??
RAISE_APPLICATION_ERROR(-20001,'Date de Naissance doit être inferieur à la date du jour');
PROMPT DONE;
SET FEEDBACK ON;
COMMIT;
SPOOL OFF;
[/fixed]
et le resultat
[fixed]Suppression des tables
DONE
Suppression des sequences
DONE
Creation des tables
\-> MUTUELLES
...DONE
\-> PATIENTS
...DONE
\-> COMMANDES
...DONE
\-> FIRMES
...DONE
\-> MEDICAMENTS
...DONE
\-> LIGNES_COMMANDES
...DONE
DONE
Creation des sequences
DONE
Insertion de quelques valeurs dans la table 'MUTUELLES'
DONE
Creation des Triggers
13[/fixed]
la obliger de faiure un control c :/