求大神帮忙写一个oracle的触发器

小博测试成长之路
测试领域新星创作者
博客专家认证
2014-04-16 11:01:07
/*==============================================================*/
/* Table: tb_course 课程表 */
/*==============================================================*/
create table tb_course
(
c_id NUMBER(4) not null,
sub_id VARCHAR2(12) not null,
starttime DATE not null,
endtime DATE not null,
week NUMBER(1) not null ,
constraint PK_TB_COURSE primary key (c_id)
);


/*==============================================================*/
/* Table: tb_stu_kq 学生考勤表 */
/*==============================================================*/
create table tb_stu_kq
(
stu_kq_id NUMBER(4) not null,
s_id VARCHAR2(12) not null,
QDtime DATE not null,
starttime DATE null,
endtime DATE null,
c_id NUMBER(4) not null,
kq_description VARCHAR2(20),
constraint PK_TB_STU_KQ primary key (stu_kq_id)
);

求帮忙写一个触发器 在 tb_stu_kq表中插入数据之后 根据 c_id去查询课程表中的开始时间和结束时间,然后写触发器把考勤表中的这两个时间更新

下面是我自己写的触发器 和插入语句,不知道插入的时候为什么会报错 ?

CREATE or replace TRIGGER tr_stu_Kq after
insert ON tb_stu_kq REFERENCING NEW AS New OLD AS Old
for each row
begin
update tb_stu_kq set starttime =(select starttime from tb_course where :new.c_id = tb_course.c_id),
endtime =(select endtime from tb_course where :new.c_id = tb_course.c_id) where :old.stu_kq_id = :new.stu_kq_id;
end;



insert into tb_stu_kq
(stu_kq_id, s_id, qdtime, c_id, kq_description)
values
(seq_stu_kq.nextval, '201017010210', sysdate, 1, '哈哈');
commit;

...全文
131 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
libo1992 2014-04-18
  • 打赏
  • 举报
回复
create or replace trigger trigger_stu_kq before insert on tb_stu_kq for each row declare minute number; begin minute:=mod (TO_NUMBER((:old.qdtime - :old.STARTTIME )) * 24 * 60,24*60) ; if minute < 5 then select '正常' into :new.kq_description from dual; else select '迟到' into :new.kq_description from dual; end if; end trigger_stu_kq;
小灰狼W 2014-04-17
  • 打赏
  • 举报
回复
触发器中不能对本表使用更新操作 下次把错误信息贴出来吧,节省别人的时间 行级触发器的一个好处就是,可以直接对该记录的字段值进行更新,不必用Update 直接对:new.starttime和:new.endtime赋值即可
  • 打赏
  • 举报
回复

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧