mysql - 在插入之前更新表会导致插入警告和添加到表中的错误值

标签 mysql sql triggers

我正在尝试创建一个触发器,它将自动填充输入数据库的不同时间之间的时间差。

使用下面的触发器时,我收到下面列出的错误,并且在触发器执行后,工作时间字段始终以“.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/

相关文章:

mysql - 使用 127.0.0.1 为特权 root 用户连接 mysql 时出错

php - 使用ajax从数据库中获取信息

mysql - 将触发器放入 MySQL 数据库以更新 Oracle 数据库?

c# - .RowFilter 与 "IN"和 "NOT IN"

database - 谁触发了我的扳机?

session - Firebird:为什么 ALTER TRIGGER 对其他 session /连接没有影响?

php - 从android : ERROR : String cannot be converted to JSONArray读取mysql中的数据

Mysql 5.7.23 几个小时后变慢,需要重启

SQL避免空行

mysql - 仅当用户编号位于阻止表中时才显示结果