Une insertion qui ne marche pas apres le trigger
Résolu
raygouda
Messages postés
69
Date d'inscription
Statut
Membre
Dernière intervention
-
raygouda Messages postés 69 Date d'inscription Statut Membre Dernière intervention -
raygouda Messages postés 69 Date d'inscription Statut Membre Dernière intervention -
Bonjour, à tous
Voilà mon trigger puis le code sql pour comprendre son fonctionnement.
CREATE OR REPLACE TRIGGER trig_iud_SALLE
AFTER INSERT OR UPDATE OF IDSALLE OR DELETE
ON SALLE
FOR EACH ROW
BEGIN
IF (INSERTING) OR (UPDATING) THEN
UPDATE SEGMENT
SET NBSALLE = NBSALLE + 1
WHERE IDSEGMENT = :NEW.IDSEGMENT + 1;
END IF;
IF (DELETING) OR (UPDATING) THEN
UPDATE SEGMENT
SET NBSALLE = NBSALLE - 1
WHERE IDSEGMENT = :OLD.IDSEGMENT;
END IF;
END;
/
SHOW ERRORS;
L;
select * from SALLE;
select * from SEGMENT;
insert into salle values ('s04','Salle 4',3,'130.120.80');
select * from SALLE;
select * from SEGMENT;
delete from salle where idsalle='s04';
select * from SALLE;
select * from SEGMENT;
Apres exécution une erreur est survenue lors de la requête:
insert into salle values ('s04','Salle 4',3,'130.120.80');
Oracle affiche:
insert into salle values ('s04','Salle 4',3,'130.120.80')
*
ERREUR à la ligne 1 :
ORA-01722: Nombre non valide
ORA-06512: à "AGOUDA13.TRIG_IUD_SALLE", ligne 3
ORA-04088: erreur lors d'exécution du déclencheur 'AGOUDA13.TRIG_IUD_SALLE'
Voilà mon trigger puis le code sql pour comprendre son fonctionnement.
CREATE OR REPLACE TRIGGER trig_iud_SALLE
AFTER INSERT OR UPDATE OF IDSALLE OR DELETE
ON SALLE
FOR EACH ROW
BEGIN
IF (INSERTING) OR (UPDATING) THEN
UPDATE SEGMENT
SET NBSALLE = NBSALLE + 1
WHERE IDSEGMENT = :NEW.IDSEGMENT + 1;
END IF;
IF (DELETING) OR (UPDATING) THEN
UPDATE SEGMENT
SET NBSALLE = NBSALLE - 1
WHERE IDSEGMENT = :OLD.IDSEGMENT;
END IF;
END;
/
SHOW ERRORS;
L;
select * from SALLE;
select * from SEGMENT;
insert into salle values ('s04','Salle 4',3,'130.120.80');
select * from SALLE;
select * from SEGMENT;
delete from salle where idsalle='s04';
select * from SALLE;
select * from SEGMENT;
Apres exécution une erreur est survenue lors de la requête:
insert into salle values ('s04','Salle 4',3,'130.120.80');
Oracle affiche:
insert into salle values ('s04','Salle 4',3,'130.120.80')
*
ERREUR à la ligne 1 :
ORA-01722: Nombre non valide
ORA-06512: à "AGOUDA13.TRIG_IUD_SALLE", ligne 3
ORA-04088: erreur lors d'exécution du déclencheur 'AGOUDA13.TRIG_IUD_SALLE'
A voir également:
- Une insertion qui ne marche pas apres le trigger
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
4 réponses
Salut,
Impossible de se prononcer, il nous manque des éléments :
- la description de la table SALLE, si le champ 2 est un number cela provoquerait une erreur, ...
- la description et le contenu de SEGMENT, si l'enregistrement s04 n'existe pas, si nbsalle est NULL, ...
cdlt
Impossible de se prononcer, il nous manque des éléments :
- la description de la table SALLE, si le champ 2 est un number cela provoquerait une erreur, ...
- la description et le contenu de SEGMENT, si l'enregistrement s04 n'existe pas, si nbsalle est NULL, ...
cdlt
A propos de la description de salle on a:
Nom NULL ? Type
IDSALLE NOT NULL VARCHAR2(7)
NOMSALLE VARCHAR2(30)
NBPOSTE NUMBER(3)
IDSEGMENT VARCHAR2(10)
Pour segment on a:
Nom NULL ? Type
IDSEGMENT NOT NULL VARCHAR2(10)
NOMSEGMENT VARCHAR2(20)
ETAGE NUMBER(2)
NBSALLE NUMBER(2)
NBPOSTE NUMBER(2)
Mais j'ai une chose que j'ai omis de dire.L'insertion fonctionne correctement lorsque je supprime le trigger l'insertion fonctionne correctement.Mais je me demande pourquoi l'insertion ne fonctionne pas lors de la création du trigger?
cdlt
Nom NULL ? Type
IDSALLE NOT NULL VARCHAR2(7)
NOMSALLE VARCHAR2(30)
NBPOSTE NUMBER(3)
IDSEGMENT VARCHAR2(10)
Pour segment on a:
Nom NULL ? Type
IDSEGMENT NOT NULL VARCHAR2(10)
NOMSEGMENT VARCHAR2(20)
ETAGE NUMBER(2)
NBSALLE NUMBER(2)
NBPOSTE NUMBER(2)
Mais j'ai une chose que j'ai omis de dire.L'insertion fonctionne correctement lorsque je supprime le trigger l'insertion fonctionne correctement.Mais je me demande pourquoi l'insertion ne fonctionne pas lors de la création du trigger?
cdlt