我正在尝试创建一个触发器,它将自动填充输入数据库的不同时间之间的时间差。
使用下面的触发器时,我会收到下面列出的错误,并且触发器执行后,hoursworked字段始终以“.99”结尾。我在SQL中测试了timediff函数,而没有通过触发器设置它,我能够生成正在寻找的正确结果。我不明白为什么这会导致错误,因为我可以获得正确的数据测试相同的SQL cmd。
CREATE TRIGGER `AddHoursWorkedBeforeInsert` BEFORE INSERT ON `TimeSheetRequests`
FOR EACH ROW
begin
SET new.hoursworked = timediff(new.endtime,new.starttime);
end
将值插入“TimeSheetRequests”后,会显示这些错误。
插入1行。
警告:#1265数据在第1行的“工作时间”栏被截断
警告:#1264超出第1行“hoursworked”列的范围值
答案 0 :(得分:0)
Warning: #1265 Data truncated for column 'hoursworked' at row 1
Warning: #1264 Out of range value for column 'hoursworked' at row 1
您尝试设置的值对于timeteded的给定列的数据类型而言太大,并且因为您尝试为给定列设置的值的长度高于给定的最大值。
解决方案是根据需要更改数据类型,并根据需要增加最大值以避免截断。