触发器设计,用SQL Server (每题30分,共60分) (1)学生表中删除一个学生时,同时从选课表中将其所有选课信息删除; (2)创建触发器限定一个学生最多只能选择2门课; (3)利用触发器限定修改后的分数只能比原来高。
时间: 2023-12-19 20:07:35 浏览: 30
好的,我会根据你的问题进行回答。以下是针对 SQL Server 的触发器设计。
1. 当删除学生表中的一名学生时,同时从选课表中删除其所有选课信息的触发器设计:
```
CREATE TRIGGER trg_delete_student
ON students
AFTER DELETE
AS
BEGIN
DELETE FROM course_selection WHERE student_id = deleted.student_id;
END;
```
2. 创建触发器限定一个学生最多只能选择2门课的设计:
```
CREATE TRIGGER trg_limit_course_selection
ON course_selection
AFTER INSERT, UPDATE
AS
BEGIN
IF (SELECT COUNT(*) FROM course_selection WHERE student_id = inserted.student_id) > 2
BEGIN
RAISERROR('A student can only select 2 courses.', 16, 1);
ROLLBACK TRANSACTION;
END;
END;
```
3. 利用触发器限定修改后的分数只能比原来高的设计:
```
CREATE TRIGGER trg_limit_score_update
ON course_selection
AFTER UPDATE
AS
BEGIN
IF (SELECT score FROM inserted) < (SELECT score FROM deleted)
BEGIN
RAISERROR('The new score must be higher than the original score.', 16, 1);
ROLLBACK TRANSACTION;
END;
END;
```
以上是三个触发器的设计,分别用于满足你对触发器的三个要求。希望能够对你有所帮助。