farib | (j'ai supprimé un ancien topik sur des types date)
j'ai un pb avec un trigger (le premier de ma vie)
j'ai plusieurs tables dont:
CREATE TABLE CINEMA (
NOM_CI VARCHAR2(50) NOT NULL,
COMPAGNIE_CI VARCHAR2(50) NOT NULL,
ADRESSE_CI VARCHAR2(150) NOT NULL,
VILLE_CI VARCHAR2(50) NOT NULL,
TELEPHONE_CI VARCHAR2(15) NOT NULL,
CONSTRAINT PK_CINEMA primary key (NOM_CI));
|
CREATE TABLE FILM (
TITRE VARCHAR2(150) NOT NULL,
ANNEE INTEGER CHECK( ANNEE BETWEEN 1800 AND 2050),
SYNOPSIS CLOB ,
DUREE INTEGER CHECK( DUREE > 0),
GUIDE_PARENTAL VARCHAR2(50),
COIMPAGNIE VARCHAR2(50),
CONSTRAINT PK_FILM primary key (TITRE));] |
CREATE TABLE HORAIRE(
NOM_CI VARCHAR2(50) NOT NULL,
TITRE VARCHAR2(50) NOT NULL,
DATE_DEBUT DATE NOT NULL,
HEURE DATE NOT NULL,
DATE_FIN DATE NOT NULL,
CONSTRAINT PK_HORAIRE PRIMARY KEY (NOM_CI,TITRE,DATE_DEBUT,HEURE),
CONSTRAINT FK_HORAIRE_NOM_CI foreign key (NOM_CI) references CINEMA (NOM_CI),
CONSTRAINT FK_HORAIRE_TITRE foreign key (TITRE) references FILM (TITRE)
); |
je souhaite créer un trigger qui vérifié qu'il n'y a pas de conflit d'horaires pour un même film dans un même cinéma
CREATE TRIGGER ach
BEFORE INSERT OR UPDATE ON HORAIRE
FOR EACH ROW
DECLARE
chevauchementBool NUMBER;
chevauchementException EXCEPTION;
BEGIN
SELECT COUNT(*) INTO chevauchementBool FROM HORAIRE,FILM
WHERE Nom_ci=:new.Nom_ci AND Titre=:new.Titre AND ( ( :new.heure BETWEEN heure AND heure+Film.duree*(1/(24*60)) )
OR
( :new.heure+Film.duree*(1/(24*60)) BETWEEN heure AND heure+Film.duree*(1/(24*60)) )
);
IF chevauchementBool != 0 THEN
RAISE chevauchementException;
END IF;
EXCEPTION
WHEN chevauchementException THEN
raise_application_error(-20000,'conflit');
END;
/
|
j'ai les erreurs suivantes que je ne comprend pas
SQL> show errors trigger ach;
Errors for TRIGGER ACH:
LINE/COL
--------------------------------------------------------------------------------
ERROR
--------------------------------------------------------------------------------
6/1
PL/SQL: SQL Statement ignored
8/6
PL/SQL: ORA-00918: column ambiguously defined
|
un idée ? Message édité par farib le 06-11-2005 à 16:22:59
|