我找不到我的代碼中的錯誤,並在2天內分配, 我一直試圖谷歌錯誤日誌和一切,但我只是無法找到什麼是錯的。變量和錯誤消息都是法文的,但您並不需要明白這是什麼意思來糾正錯誤。提前致謝!觸發器插入錯誤
錯誤插入進入刻錄後,我得到: ORA-01403:找不到數據 ORA-06512:一個 「KA791013.PASABANDONPASNOTENULLE」,8號線 ORA-04088:觸發錯誤 'KA791013.PASABANDONPASNOTENULLE'
表格:
CREATE TABLE Inscription
(codePermanent CHAR(12) NOT NULL,
sigle CHAR(7) NOT NULL,
noGroupe INTEGER NOT NULL,
codeSession INTEGER NOT NULL,
dateInscription DATE NOT NULL,
dateAbandon DATE,
note INTEGER,
CONSTRAINT SigleUnique UNIQUE(sigle),
CONSTRAINT ClePrimaireInscription PRIMARY KEY (codePermanent,sigle,noGroupe,codeSession),
CONSTRAINT CERefGroupeCours FOREIGN KEY (sigle,noGroupe,codeSession) REFERENCES GroupeCours,
CONSTRAINT CECodePermamentRefEtudiant FOREIGN KEY (codePermanent) REFERENCES Etudiant
)
/
CREATE TABLE SessionUQAM
(codeSession INTEGER NOT NULL,
dateDebut DATE NOT NULL,
dateFin DATE NOT NULL,
CONSTRAINT C2 CHECK(dateFin = dateDebut +90),
CONSTRAINT ClePrimaireSessionUQAM PRIMARY KEY (codeSession)
)
/
CREATE TRIGGER PasAbandonPasNoteNulle AFTER INSERT OR UPDATE OF dateAbandon ON Inscription
FOR EACH ROW
DECLARE
lecodeSession Inscription.codeSession%TYPE;
ladateAbandon Inscription.dateAbandon%TYPE;
ladateDebut DATE;
ladateFin DATE;
lanote Inscription.note%TYPE;
BEGIN
SELECT dateDebut INTO ladateDebut
FROM SessionUQAM
WHERE SessionUQAM.codeSession = lecodeSession;
SELECT dateFin INTO ladateFin
FROM SessionUQAM
WHERE SessionUQAM.codeSession = lecodeSession;
IF (ladateAbandon IS NOT NULL AND lanote IS NOT NULL)THEN
RAISE_APPLICATION_ERROR(-20000,'Si la date abandon est non null alors la note doit etre non null');
END IF;
IF (ladateAbandon > ladateDebut + 30) THEN
RAISE_APPLICATION_ERROR(-20000,'La date abandon doit etre de 30 jours maximum apres la date de Debut');
END IF;
IF (ladateAbandon > ladateFin)THEN
RAISE_APPLICATION_ERROR(-20000,'La date abandon doit etre avant la fin de session');
END IF;
END;
/
INSERT INTO SessionUQAM
VALUES(32003,'01/09/2015','30/11/2015')
/
INSERT INTO Inscription
VALUES('LAVP24059100','INF3143',10,32003,'01/08/2015','30/10/2015', 42)
/
錯誤很明顯。你的「select into ...」之一沒有返回任何數據。 – OldProgrammer