Qu!n 2020-01-05 00:12 采纳率: 0%
浏览 207

MySQL 触发器不执行 大学课设应该不难

按道理来说我输入

insert into shangban (y_id,time1) value('03','07:06:00');

这个代码之后,在表里会自动输入status1了吧

delimiter ??
create trigger kaoqin before insert on shangban 
for each row
begin
declare a time;
declare b time;
declare c time;
set a =New.time1;
set b =(select sbtime from shijian where shijianduan='下午');
set c =(select sbtime from shijian where shijianduan='上午');
case
when TIMESTAMPDIFF(minute,c,a)<=0 and TIMESTAMPDIFF(minute,b,a)<=0 then set@new.status1 ='正班';
when TIMESTAMPDIFF(minute,c,a)>0 and TIMESTAMPDIFF(minute,c,a)<=5 and TIMESTAMPDIFF(minute,b,a)<=0 then set @new.status1='迟到';
when TIMESTAMPDIFF(minute,c,a)>5 and TIMESTAMPDIFF(minute,c,a)<=300 and TIMESTAMPDIFF(minute,b,a)<=0 then set @new.status1 ='旷工';
when TIMESTAMPDIFF(minute,c,a)>300 and TIMESTAMPDIFF(minute,b,a)<=0 then set @new.status1 ='正班';
when TIMESTAMPDIFF(minute,b,a)>0 and TIMESTAMPDIFF(minute,b,a)<=5 then set @new.status1 ='迟到';
when TIMESTAMPDIFF(minute,b,a)>5 and TIMESTAMPDIFF(minute,b,a)<=180 then set @new.status1 ='旷工';
else set @status1 ='数据错误';
end case;
end ??
  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 03:34
    关注

    根据你提供的信息,你的MySQL触发器应该是正确的。在你执行insert语句之后,触发器应该会自动执行,并将status1字段自动赋值为对应的考勤状态。如果你执行这个insert语句之后没有看到status1字段被赋值,那么可能是触发器没有正确地安装或者触发器语句中存在错误。建议你检查一下触发器代码的语法和逻辑,或者重新安装触发器。

    评论

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?