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是干嘛用的
就是用触发器做,大概什么我知道 具体的细节怎么写 不知道
学生表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<