我找不到我的代码中的错误,并在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