pb trigger pl/sql [oracle] - SQL/NoSQL - Programmation
Marsh Posté le 06-11-2005 à 17:53:11
Le champ Titre est à la fois dans la table FILM et dans la table HORAIRE, donc dans ton SELECT COUNT(*) il faut préfixer
Marsh Posté le 06-11-2005 à 18:34:45
effectivement, c'est passé.
Va savoir pourquoi, ça m'a viré l'érreur du "statement ignored"
Marsh Posté le 06-11-2005 à 18:58:41
Tout était lié, il faut lire la liste d'erreurs à l'envers il me semble, la requête était ignorée à cause de la colonne non aliasée.
Marsh Posté le 06-11-2005 à 16:22:17
(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