SQL储存过程与触发器怎么做

SQL语言-储存过程与触发器
1.创建一个存储过程,以便按照所提供的学生的学号来查找其选课成绩记录。要求输入学号、姓名、课程名,课程考试成绩。
2.在选课表上建立一个触发器,当某位同学的选课记录达到最大8门课时则不允许增加新的选课i记录。
3.在sc中创建触发器,要求在删除学生的选课记录时,如果已经有选课成绩的则不能删除

  1. create PROCEDURE sp_name @学号 varchar(20) as
    select a.学号,a.姓名,c.课程名,d.成绩
       from 学生表 a join 选课表 b on a.学生ID=b.学生ID 
            join 课程表 c on b.课程ID=c.课程ID
           join 考试成绩表 d on b.学生ID=d.学生ID and b.课程ID=d.课程ID
         where a.学号=@学号
    
  2. create trigger tr_选课表_insert
    on 选课表 for insert
    as
    begin
    if exists(select 1 from (
    select a.学号,count(*) 课程数
    from 选课表 a
      where exists (select 1 from inserted b 
                 where b.学号=a.学号)
    having count(*)>8 ) t)
    
    RAISERROR(N'课程不允许超过8个',16,1)
    end
  3. create trigger tr_选课表_delete
    on 选课表 for delete
    as
    begin
    if exists(select 1 from deleted a join
            成绩表 b on a.学生ID=b.学生ID and a.课程ID=b.课程ID)
    
    RAISERROR(N'已经有选课成绩不能删除',16,1)
    end
    大概就这个样子,不过怎么这么多学生党来这里求作业?上课都打游戏去了么?

你倒是把表结构发出来啊。

https://m.pc-daily.com/wangluo/74835.html

没有表,老师给的作业,没学过