我正在尝试创建一个触发器,它将自动填充输入数据库的不同时间之间的时间差。
使用下面的触发器时,我收到下面列出的错误,并且在触发器执行后,工作时间字段始终以“.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 行“工作时间”列的值超出范围
最佳答案
Warning: #1265 Data truncated for column 'hoursworked' at row 1
Warning: #1264 Out of range value for column 'hoursworked' at row 1
您尝试设置的值对于给定列 Hoursworked 的数据类型来说太大,而且您尝试为给定列设置的值的长度高于给定的最大值。
解决方案是根据需要更改数据类型并根据需要增加最大值以避免截断。
关于mysql - 在插入之前更新表会导致插入警告和添加到表中的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091092/