SQL触发器问题(数据库)

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:27:54
有以下三张表
学生表S(SNO,SNAME,BIRTHDAY,AGE,sex)
课程表C(CNO,CNAME,CREDIT,TEACHER)
选课表SC(SNO,CNO,GRADE,SELDATE)
1.对SC表建立触发器,要求每个学生最多只能选修5门课程.
2.对S表建立一触发器,使更改后的年龄只能比原值大
3.在关系SC中修改课程号CNO,也就是学生选课登记需作变化,要求保持每门课程选修人数不超过3

这三个 怎么做 最好再把关键字简单解释下 比如reference是干嘛用的
就是用触发器做,大概什么我知道 具体的细节怎么写 不知道

(1)
create trigger triggrnameone on sc
for insert
as
begin
declare @insno varchar(20)
select @insno = sno from inserted
declare @count int
select @count = count(*) from sc where sno = @insno
if @count > 5
begin
rollback
print '该学生选课不能超过五门'
end
end
(2)
create trigger triggernametwo on s
for update
as
begin
if update(age)
begin
declare @oldage int
declare @newage int
select @oldage = age from deleted
select @newage = age from inserted
if @newage < @oldage
begin
rollback
print "更改后的年龄要比原值大"
end
end
end
(3)--只考虑了修改课程号,没有考虑修改学生号
create trigger triggernaemthree on sc
for update
as
begin
if update(cno)
begin
declare @cno varchar(10)
declare @count int
select @cno = cno from inserted
select @count = count(*) from sc where cno =@cno
if @count > 3<