2
초등 학교를 대표하는 간단한 데이터베이스를 프로그래밍하려고 할 때 코드를 컴파일하려고 할 때이 오류가 발생했습니다.SQLite "오류 : 'studentID'열을 찾을 수 없습니다."
ATTENDS 테이블에 INSERT하려고하면 오류가 발생합니다.
다른 모든 것이 제대로 작동하기 때문에 오류를 찾지 못하는 것 같습니다. 또한 모든 트리거를 제거하면 오류가 발생하여 문제가되지 않습니다.
어떤 도움을 주시면 감사하겠습니다.
CREATE TABLE IF NOT EXISTS Student(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
lastName TEXT NOT NULL,
gender TEXT COLLATE NOCASE NOT NULL ,
DOB TEXT NOT NULL,
address TEXT NOT NULL,
grade TEXT NOT NULL,
/* Checks */
CHECK(gender IN ("m", "f", "o")),
CHECK(grade IN("K", "1", "2", "3", "4", "5", "6"))
);
CREATE TABLE IF NOT EXISTS Course(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
grade TEXT COLLATE NOCASE NOT NULL,
/* Checks */
CHECK(grade IN("K", "1", "2", "3", "4", "5", "6"))
);
CREATE TABLE IF NOT EXISTS Attends(
studentID INTEGER,
courseID INTEGER,
gradePoints TEXT COLLATE NOCASE,
FOREIGN KEY(studentID) REFERENCES Student(id),
FOREIGN KEY(courseID) REFERENCES Course(id),
/* Checks */
CHECK(gradePoints ISNULL OR gradePoints IN ("A", "B", "C", "D", "E")),
UNIQUE(studentID, courseID)
);
CREATE TRIGGER IF NOT EXISTS sameGrade
BEFORE INSERT ON Attends
WHEN (SELECT grade FROM Student WHERE Student.id = studentID) <> (SELECT grade
FROM Course Where Course.id = courseID)
BEGIN
SELECT RAISE(ABORT,'The student’s grade does not match the course’s grade.');
END;
CREATE TRIGGER IF NOT EXISTS changeGrade
BEFORE UPDATE ON Student
WHEN (NOT OLD.grade LIKE "K" AND NEW.grade LIKE "K") OR (NOT OLD.grade LIKE "K" AND NEW.grade < OLD.grade)
BEGIN
SELECT RAISE(ABORT,'The student cannot go into a lower grade.');
END;
CREATE TRIGGER IF NOT EXISTS max100Students
BEFORE INSERT ON Attends
WHEN 100 < (SELECT COUNT(*) FROM Attends WHERE courseID = NEW.courseID)
BEGIN
SELECT RAISE(ABORT,'Courses cannot have more than 100 students.');
END;
INSERT INTO Student(name,lastName,gender,DOB,address,grade) VALUES('Taylor','B','F','1992-04-25','123 1st ST','2');
INSERT INTO Student(name,lastName,gender,DOB,address,grade) VALUES('Taylor','B','F','1992-04-25','123 1st ST','2');
INSERT INTO Student(name,lastName,gender,DOB,address,grade) VALUES('Taylor','B','F','1992-04-25','123 1st ST','2');
INSERT INTO Student(name,lastName,gender,DOB,address,grade) VALUES('Taylor','B','F','1992-04-25','123 1st ST','2');
INSERT INTO Student(name,lastName,gender,DOB,address,grade) VALUES('Taylor','B','F','1992-04-25','123 1st ST','4');
INSERT INTO Course(name,grade) VALUES('Gym','K');
INSERT INTO Course(name,grade) VALUES('Gym','1');
INSERT INTO Course(name,grade) VALUES('Gym','2');
INSERT INTO Course(name,grade) VALUES('Gym','3');
INSERT INTO Course(name,grade) VALUES('Gym','4');
INSERT INTO Course(name,grade) VALUES('Gym','5');
INSERT INTO Course(name,grade) VALUES('Gym','6');
INSERT INTO Attends(studentID, courseID, gradePoints) VALUES(1,3,NULL);
INSERT INTO Attends(studentID, courseID, gradePoints) VALUES(2,3,NULL);
INSERT INTO Attends(studentID, courseID, gradePoints) VALUES(3,3,NULL);
-- INSERT INTO Attends(studentID, courseID, gradePoints) VALUES(4,3,NULL);
-- INSERT INTO Attends(studentID, courseID, gradePoints) VALUES(5,3,NULL);
무엇이 오류입니까? –
학생 테이블에 StudentId Cloumn이없고 ID가 있습니다. 합리적인 오류입니다. –
StudentID 열을 가지고 있지만 Attends 테이블에 추가하려고합니다. – user2280563