我想用PLSQL爲每個學生成績添加10分。使用PLSQL將相同的值添加到列中的每個元素
UPDATE AverageView SET AverageModifier = 10 WHERE COURSE_ID = 'INFO101' AND GROUP_ID = 101 AND SEMESTER = 'SUMER14';
所以,當我嘗試更新的觀點,我想這觸發激活,我想INSTEAD OF UPDATE使用和修改真實的表。像這樣:
CREATE OR REPLACE TRIGGER ChangeAverage
INSTEAD OF UPDATE ON AverageView
FOR EACH ROW
BEGIN
UPDATE INSCRIPTIONS SET grade = (grade + 10) WHERE COURSE_ID = :NEW.COURSE_ID AND GROUP_ID = :NEW.GROUP_ID AND SEMESTER = :NEW.SEMESTER ;
END;
/
我增加了一個+10「手動」,但最終它將只是一個變量。
UPDATE INSCRIPTIONS SET grade = (grade + modifier) ....
我認爲它不工作,因爲有超過一個等級更新,我卡在那裏。
當我刪除了等級,並設置一個靜態值,它是'那種'工作,但我應該使用循環和光標它設置所有的學生成績分至10
CREATE OR REPLACE TRIGGER ChangeAverage
INSTEAD OF UPDATE ON AverageView
FOR EACH ROW
BEGIN
UPDATE INSCRIPTIONS SET grade = 10 WHERE COURSE_ID = :NEW.COURSE_ID AND GROUP_ID = :NEW.GROUP_ID AND SEMESTER = :NEW.SEMESTER ;
END;
/
?
我的銘文表看起來像這樣:
STUDENT_ID CHAR(12) NOT NULL,
COURSE_ID CHAR(12) NOT NULL,
GROUP_ID INTEGER NOT NULL,
SEMESTER CHAR(12) NOT NULL,
REGISTRATION_DATE DATE NOT NULL,
GRADE INTEGER,
我AverageView是:從我所知道的意見
CREATE OR REPLACE VIEW AverageView AS
SELECT COURSE_ID, GROUP_ID, SEMESTER, AVG(GRADE) AS Average
FROM Inscriptions
GROUP BY COURSE_ID, GROUP_ID, SEMESTER
/
,他們不能被修改。相反,我修改了題詞表。
比方說我的銘文表看起來像這樣
Student A, INFO101, 101, SUMER14, ramdom_date, 70
Student B, INFO101, 101, SUMER14, ramdom_date, 50
我的看法完美的作品:它的60的平均輸出這門課程。
現在,用我的觸發器,我想提高平均水平。
UPDATE AverageView SET AverageModifier = 10 WHERE COURSE_ID = 'INFO101' AND GROUP_ID = 101 AND SEMESTER = 'SUMER14';
但是,從我知道,我不能修改視圖的內容,所以我要添加10(現在),以每級表中的銘文。
因此觸發會導致這樣的事情:
Student A, INFO101, 101, SUMER14, ramdom_date, 80
Student B, INFO101, 101, SUMER14, ramdom_date, 60
問候
你的表的結構'INSCRIPTIONS',查看'AverageView'和一些示例數據將是有用的幫助你。 –
我更新了問題,我添加了更多的細節。 – metraon