📄 9-2.sql
字号:
USE Educational
GO
-- 如果已存在同名触发器,则先进行删除操作
IF exists(SELECT * FROM dbo.sysobjects
WHERE id = object_id(N'TRGrade_Delete')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
DROP TRIGGER TRGrade_Delete
GO
CREATE TRIGGER TRGrade_Delete /* 触发器名 */
ON Grade /* 作用的表 */
FOR DELETE /* 创建DELETE触发器 */
AS
DECLARE @CreditHour TINYINT /* 学分 */
DECLARE @Grade TINYINT /* 成绩 */
DECLARE @StuID VARCHAR(10)
DECLARE @CourseID VARCHAR(8)
DECLARE @Gradeo TINYINT
SELECT * FROM Deleted /* 查看删除的数据,调试成功后该行需删除 */
SELECT @Grade=D.Grade, @CreditHour=C.CreditHour
FROM Deleted D INNER JOIN Course C /* 按CourseID联接Course */
ON D.CourseID = C.CourseID
IF (@Grade>=60) /* 成绩大于等于60 */
BEGIN
UPDATE Student /* 已修学分累计 */
SET CreditHour=CreditHour - @CreditHour
FROM Student S, Deleted D
WHERE S.StudentID = D.StudentID
END
GO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -