le problème est le suivant: J'ai implémenté un trigger sur la table appelée CLAN_AFFILIATI qui augmente (si inseriemento) et diminue (en cas d'annulation) un attribut (NUMAFFILIATI) d'une autre table appelée CLAN. ce que je ferais est de bloquer la NUMAFFILIATI mise à jour du Clan par l'utilisateur et avait pensé à r autre Trigge sur CLAN qui a fait ceci:problème avec déclencheur dans oracle
déclencheur sur CLAN_AFFILIATI (CLAN VARCHAR, affiliato VARCHAR, Ruolo VARCHAR)
CREATE OR REPLACE TRIGGER "AggiornamentoNumAffiliati"
AFTER INSERT OR DELETE ON CLAN_AFFILIATI
FOR EACH ROW
DECLARE
CLAN_APPARTENENZA VARCHAR(20);
BEGIN
IF INSERTING THEN
SELECT NOME INTO CLAN_APPARTENENZA
FROM CLAN
WHERE NOME=:new.CLAN;
UPDATE CLAN
SET NUMAFFILIATI=NUMAFFILIATI+1
WHERE CLAN_APPARTENENZA=NOME;
ELSE
SELECT NOME INTO CLAN_APPARTENENZA
FROM CLAN
WHERE NOME=:old.CLAN;
UPDATE CLAN
SET NUMAFFILIATI=NUMAFFILIATI-1
WHERE CLAN_APPARTENENZA=NOME;
END IF;
END;
déclencheur sur CLAN (NOM VARCHAR, NUMAFFILIATI ENTIER)
CREATE OR REPLACE TRIGGER "ModificaNumAffiliati"
BEFORE INSERT OR UPDATE OF NUMAFFILIATI ON CLAN
FOR EACH ROW
DECLARE
CONT NUMBER:=0;
BEGIN
IF INSERTING THEN
IF :new.NUMAFFILIATI <> 0 THEN
RAISE_APPLICATION_ERROR(-20016,'NUMERO ERRATO');
END IF;
ELSE
SELECT COUNT(*) INTO CONT
FROM CLAN_AFFILIATI
WHERE :old.NOME=CLAN;
IF CONT <> :new.NUMAFFILIATI THEN
RAISE_APPLICATION_ERROR(-20017,'NUMERO ERRATO');
END IF;
END IF;
END;
mais alors je fais signale une erreur:
error ORA-04091: Table ANTONIO.CLAN_AFFILIATI is being modified, the trigger/function can not read
ORA-06512: at "ANTONIO.ModificaNumAffiliati", line 10
ORA-04088: error during execution of trigger 'ANTONIO.ModificaNumAffiliati'
ORA-06512: at "ANTONIO.AggiornamentoNumAffiliati", line 12
ORA-04088: error during execution of trigger 'ANTONIO.AggiornamentoNumAffiliati
comment puis-je résoudre ce problème ....
Pourriez-vous fournir le code d'erreur Oracle exact? –
erreur ORA-04091: Le tableau ANTONIO.CLAN_AFFILIATI est en cours de modification, le déclencheur/la fonction ne peut pas lire ORA-06512: à "ANTONIO.ModificaNumAffiliati", ligne 10 ORA-04088: erreur lors de l'exécution du déclencheur 'ANTONIO.ModificaNumAffiliati' ORA- 06512: à "ANTONIO.AggiornamentoNumAffiliati", ligne 12 ORA-04088: erreur lors de l'exécution du déclencheur 'ANTONIO.AggiornamentoNumAffiliati – kafka