为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。.现要建立关于系、学生、班级的数据库(studentdb),关系模式为: 
          STUDENT  (学号,姓名,年龄,班号) 
          CLASS     (班号,专业名,系名,入学年份) 
          DEPARTMENT (系号,系名 )试用SQL语言完成以下功能:1 建表,在定义中要求声明: 
  (1)每个表的主外码。 
  (2)每个班级的人数不能超过30人。  
  (3)只有班里没有学生的时候,才能删除该班级。大家好,我是新手,第(2)和(3)问要怎么写?

解决方案 »

  1.   

    create trigger tr_STUDENT 
    on STUDENT
    INSTEAD OF  insert
    as
    begin
    declare @stusum int
    select @stusum=count(*) from STUDENT
    if(@stusum <5)
    insert into STUDENT select * from inserted
    else
    raiserror 50005 N'学生不能大于30'
    endcreate table STUDENT (学号 int,姓名 varchar(20),年龄 int,班号 int)
    insert into student select 1,'a',2,3
    select * from student
    --第2题
    --楼主应该多点分数,太少了
      

  2.   

    create table department (系号 int ,系名 varchar(20) primary key)create table class (班号 int primary key,专业名 char(10),系名 varchar(20),入学年份 int foreign key (系名) references department(系名))create table student (学号 int primary key,姓名 char(10),年龄 int,班号 int foreign key (班号) references class (班号))不能多于30个,可创建插入触发器
    create trigger trigI_student on student
    for insert
    as
    if (select count(*) from student)>30
    begin
    raiserror('不能多于30人',16,1)
    rollback tran
    end