+ -
当前位置:首页 → 问答吧 → HELP

HELP

时间:2011-12-09

来源:互联网

大侠们。我现在要建触发器,实现下面的功能:我现在有一个成绩表(SNO(学号),CNO(课程号),SCORES(成绩)),一个补考表(SNO(学号),CNO(课程号),SCORES(成绩)),当我在成绩表中输入SCORES(成绩)小于60分时,就把SNO(学号),CNO(课程号),自动添加到补考表中,

当我在成绩表中修改SCORES(成绩),成绩小于60分时也把SNO(学号),CNO(课程号)自动添加到补考表中,

当我在成绩表中修改SCORES(成绩),比原本小于60分的成绩改为大于60分就自动在补考表中删除相应的信息,这怎么实现啊?

各位帮帮忙、小弟是菜鸟一个。

作者: aning_02   发布时间: 2011-12-09

SQL code

if object_id('成绩表') is not null
   drop table 成绩表
go
create table 成绩表
(
 SNO varchar(10),
 CNO varchar(10),
 SCORES int
)
go
insert into 成绩表 select '01','02',80
go
if object_id('补考表') is not null
   drop table 补考表
go
create table 补考表
(
 SNO varchar(10),
 CNO varchar(10),
 SCORES int
)
go
--触发器
if object_id('tr_成绩表') is not null
   drop trigger tr_成绩表
go
create trigger tr_成绩表 on 成绩表
after update
as
  if update(SCORES) --用 if update()判断补修改的字段
  begin
    if (select SCORES from inserted)<60
        insert into 补考表(SNO,CNO) select SNO,CNO from inserted
    else
        delete 补考表 from 补考表 inner join inserted on 补考表.SNO=inserted.SNO and 补考表.CNO=inserted.CNO
  end
GO
/*
--原始数据
SNO        CNO        SCORES
---------- ---------- -----------
01         02         80

(1 行受影响)

SNO        CNO        SCORES
---------- ---------- -----------

(0 行受影响)
*/
--修改成绩小于60
update 成绩表 set scores = 59 where SNO='01' and CNO='02'
/*
--执行结果
SNO        CNO        SCORES
---------- ---------- -----------
01         02         59

(1 行受影响)

SNO        CNO        SCORES
---------- ---------- -----------
01         02         NULL

(1 行受影响)
*/
--修改成绩大于等于60
update 成绩表 set scores = 60 where SNO='01' and CNO='02'
/*
--执行结果
SNO        CNO        SCORES
---------- ---------- -----------
01         02         60

(1 行受影响)

SNO        CNO        SCORES
---------- ---------- -----------

(0 行受影响)

*/


作者: pengxuan   发布时间: 2011-12-09

上面的哥、请问、实现了这个功能没?“当我在成绩表中输入SCORES(成绩)小于60分时,就把SNO(学号),CNO(课程号),自动添加到补考表中,

作者: aning_02   发布时间: 2011-12-09

大侠、我试过了好像真的没有实现这个功能:“当我在成绩表中输入SCORES(成绩)小于60分时,就把SNO(学号),CNO(课程号),自动添加到补考表中”这个功能我想表达的意思是、补考表里面原本没有记录、也就是当我在成绩表里面插入(1(学号),01(课程号),20(成绩))这整条记录的时候、那边的补考表也应该添加相应的记录

作者: aning_02   发布时间: 2011-12-09