【发布时间】:2019-07-02 01:42:06
【问题描述】:
这是我第一次在 Stack Overflow 上发帖。我通常只是搜索以前的问题并找到我的答案,但在这种情况下,我似乎无法在这里或更广泛的互联网上找到我的问题的答案。
我遇到的问题是我想填充一个用于自动存储考勤的多对多链接表。当新学生添加到课程中时,学生 StudentNo 和每个适用的 Lesson's LessonNo 将作为主键输入到链接表中。此外,学生的考勤代码将自动设置为“T”,以表明考勤有待确认。
我不希望这是一个程序,因为数据库预计有超过 6,000 个活跃的 studentNo 条目,每个学生都有超过 100 节课。只有家庭学生(他们的定义,不是我的)上大学。 homeStudent 主键与整个学生主键相同。
我的触发器如下:
CREATE OR REPLACE TRIGGER Student_Added_to_Course
AFTER INSERT ON HomeStudent
FOR EACH ROW
DECLARE
CURSOR applicable_lessons
IS
Select Student.studentNo, Lesson.LessonNo
FROM
Student, Lesson, Course, Module
WHERE
Student.StudentNo = :new.studentNo
AND
Student.CourseNo = Course.CourseNo
AND
Course.CourseNo = Module.CourseNo
AND
Lesson.ModuleNo = Module.ModuleNo;
BEGIN
FOR I IN applicable_lessons
LOOP
INSERT INTO Attendance (StudentNo, LessonNo, AttendanceCode)
VALUES (I.student.studentNo, I.Lesson.LessonNo, 'T');
END LOOP;
END;
/
我收到以下错误:
第 18 行:忽略 SQL 语句 第 19 行:必须声明组件“课程” 第 19 行:此处不允许列
由于我所有的错误都是从第 18 行开始发生的,我假设我在插入循环期间犯了一个错误?
谁能告诉我我在这里做错了什么。我认为解决方法相当简单,但我对自己的工作有点眼花缭乱,找不到问题所在。
提前谢谢你, 鲍布雷克
【问题讨论】:
标签: oracle plsql oracle11g database-trigger