SQL创建触发器trigger1,实现当修改学生信息表中的某个学生的学号时,对应学生成绩表中的学号也做修改
3个回答
展开全部
create trigger trigger1 on 学生信息表
for update
declare @old_id int
declare @new_id int
select @old_id=学号 from deleted
select @new_id=学号 from inserted
if update(学号)
begin
update 学生成绩表 set 学号=@new_id where 学号=@old_id
end
你运行下,应该没有问题。 如果你的学号不是int类型,而是varchar类型的话,修改下定义两个ID的类型。
for update
declare @old_id int
declare @new_id int
select @old_id=学号 from deleted
select @new_id=学号 from inserted
if update(学号)
begin
update 学生成绩表 set 学号=@new_id where 学号=@old_id
end
你运行下,应该没有问题。 如果你的学号不是int类型,而是varchar类型的话,修改下定义两个ID的类型。
追问
为什么我修改如下:
update 学生信息表
set sno='000000'
where sname='某某'
时,学生成绩表的学号没有变!
展开全部
create trigger trigger1
on 学生信息表
for update
as
if update(学号)
update 成绩表 set 学号=a.asno from (select inserted.学号 as asno,deleted.学号 as bsno from inserted,deleted) as a inner join 成绩表 as b on a.bsno=b.学号
on 学生信息表
for update
as
if update(学号)
update 成绩表 set 学号=a.asno from (select inserted.学号 as asno,deleted.学号 as bsno from inserted,deleted) as a inner join 成绩表 as b on a.bsno=b.学号
来自:求助得到的回答
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE TRIGGER xsb_update
ON XSB AFTER UPDATE
AS
BEGIN
DECLARE @old_num char(6), @new_num char(6)
SELECT @old_num=学号 FROM deleted
SELECT @new_num=学号 FROM inserted
UPDATE CJB SET 学号=@new_num
WHERE 学号=@old_num
END
ON XSB AFTER UPDATE
AS
BEGIN
DECLARE @old_num char(6), @new_num char(6)
SELECT @old_num=学号 FROM deleted
SELECT @new_num=学号 FROM inserted
UPDATE CJB SET 学号=@new_num
WHERE 学号=@old_num
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询