三个表:学生student(学号,姓名,年龄,班号)
班class(班号,专业名,系名,入学年份)
系department(系号,系名)
请使用查询分析器建表,要求声明:1.每个班级的人数不能超过20人。2.只有班级里没有学生的时候,才能删除该班级。
想了好久都不知道如果声明,望各位高人指点,不甚感激!
还有一个非自考的问题:mssql触发器中能不能用如count()这样的汇总函数,如果使用,能不能给个提示或实例!谢谢!
班class(班号,专业名,系名,入学年份)
系department(系号,系名)
请使用查询分析器建表,要求声明:1.每个班级的人数不能超过20人。2.只有班级里没有学生的时候,才能删除该班级。
想了好久都不知道如果声明,望各位高人指点,不甚感激!
还有一个非自考的问题:mssql触发器中能不能用如count()这样的汇总函数,如果使用,能不能给个提示或实例!谢谢!
as
declare @count int
select @count = count(1) from tb
if @count >= 20
return
else
insert tb select * from inserted
ON [student]
FOR insert
AS
BEGIN
DECLARE @class varchar(20)
select @class=inserted.[class] from inserted
if (select count(*) from [student] where 班号=@class) >=20
begin
ROLLBACK TRANSACTION
RAISERROR ('班级人数以满,不能插入。',16,1)--抛出异常
end
END
ON [class]
FOR delete
AS
BEGIN
DECLARE @class varchar(20)
select @class=deleted.[class] from deleted
if (select count(*) from [student] where 班号=@class) >0
begin
ROLLBACK TRANSACTION
RAISERROR ('该班级还有人,不能删除该班级。',16,1)--抛出异常
end
END
ON [class]
FOR delete
AS
BEGIN
DECLARE @class varchar(20)
select @class=deleted.[class] from deleted
if (select count(*) from [student] where 班号=@class) >0
begin
ROLLBACK TRANSACTION
RAISERROR ('该班级还有人,不能删除该班级。',16,1)--抛出异常
end
END
还有一个非自考的问题:mssql触发器中能不能用如count()这样的汇总函数,如果使用,能不能给个提示或实例!谢谢!
当然可以有count(),上面两个储发器都有count()
ON [class]
FOR delete
AS
BEGIN
DECLARE @class varchar(20)
select @class=deleted.[class] from deleted
if (select count(*) from [student] where 班号=@class) >0
begin
ROLLBACK TRANSACTION
RAISERROR ('该班级还有人,不能删除该班级。',16,1)--抛出异常
end
END