[SQL - Oracle] propleme de trigger

  • Auteur de la discussion KangOl
  • Date de début

cisco

Habitué
le end (y avait un begin...)

CREATE OR REPLACE TRIGGER VerifDateNaiss
BEFORE INSERT OR UPDATE OF DATENAISS_PATIENT ON PATIENTS
FOR EACH ROW
begin
WHEN (new.DATENAISS_PATIENT >= SYSDATE) -- :new ??
RAISE_APPLICATION_ERROR(-20001,'Date de Naissance doit être inferieur à la date du jour');
[g]end; [/g]

ca passe?
 

KangOl

Grand Maître
j'ai copier coller ton code et ca fait pareil :/

ma version d'oracle
[fixed]Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production[/fixed]
 

KangOl

Grand Maître
[citation=1843,1][nom]cisco a écrit[/nom]le end (y avait un begin...)

CREATE OR REPLACE TRIGGER VerifDateNaiss
BEFORE INSERT OR UPDATE OF DATENAISS_PATIENT ON PATIENTS
FOR EACH ROW
begin
WHEN (new.DATENAISS_PATIENT >= SYSDATE) -- :new ??
RAISE_APPLICATION_ERROR(-20001,'Date de Naissance doit être inferieur à la date du jour');
[g]end; [/g]

ca passe?
[/citation]ca plante avant ! ca plante au CREATE :cry:
 

cisco

Habitué
[fixed]
CREATE TABLE MUTUELLES
(
REF_MUTUELLE NUMBER(10) NOT NULL,
CONSTRAINT CPMUTUELLE PRIMARY KEY (REF_MUTUELLE),
NOM_MUTUELLE VARCHAR2(50) NOT NULL
);


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)
);

CREATE OR REPLACE TRIGGER VerifDateNaiss
BEFORE INSERT OR UPDATE OF DATENAISS_PATIENT ON PATIENTS
FOR EACH ROW
begin
WHEN (new.DATENAISS_PATIENT >= SYSDATE) -- :new ??
RAISE_APPLICATION_ERROR(-20001,'Date de Naissance doit être inferieur à la date du jour');
end;
[/fixed]

Ca chez moi ca passe...
(je viens de le faire et c'est un copié collé)

Si ca passe pas, c'est un pb de config (genre grant sur trigger)
 

KangOl

Grand Maître
non c pas ca !!

version qui fonctionne :
[cpp]CREATE OR REPLACE TRIGGER VerifDateNaiss
BEFORE INSERT OR UPDATE OF DATENAISS_PATIENT ON PATIENTS
FOR EACH ROW WHEN (new.DATENAISS_PATIENT >= SYSDATE)
begin
RAISE_APPLICATION_ERROR(-20001,'Date de Naissance doit être inferieur à la date du jour');
end;
/[/cpp]

et oui ! il faut un slash a la fin :/
 

cisco

Habitué
a sorry, moi je fait ca de T.O.A.D, et toi d'un client net8 (sqlnet)

Effectivement pour procédure fonction, ... il faut des / a la fin de chaque procédure.... tu t'en rapellera je crois maintenant!
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 145
Messages
6 718 333
Membres
1 586 416
Dernier membre
Guigeek2814
Partager cette page
Haut