一个关于SQL触发器语句问题的问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 17:16:28
class 表中有字段 (cal_ID,stu_Sum)
student表中有字段(stu_ID, cal_ID,)并且 cal_ID foreign key references calss(cal_ID)
触发器
create trigger [updateclass]
on [student]
for insert,update
as
begin
update class set stu_Sum = stu_Sum+1
where cla_ID= (select cla_ID from inserted)
end

问:
1,where cla_ID= (select cla_ID from inserted) 是什么意思?
2,修改(update)students 表时,
触发器会执行吗?where条件怎么执行?怎么判断cla_ID?
也就是说 where cla_ID= (select cla_ID from inserted) 中的inserted具有 insert+update 两者之一就可以了

inserted 是系统表结构跟你要插入数据表的结构是一样,如你要插入数据到student,那么inserted结构就跟student一样
1,where cla_ID= (select cla_ID from inserted) 是什么意思?就是当student表的cla_id =你要修改或者插入的cla_id 时候才去修改
修改(update)students 表时触发器会执行吗?从for insert,update 可以知道是在插入或者修改数据都会执行
where条件怎么执行?满足student表的cla_id =你要修改或者插入的cla_id 时候才执行

会执行
where cla_ID= (select cla_ID from inserted) 是当你在表STUDENT上插入一条记录或修改信息时会触发的条件