0
我有一个通过网页更新的MySQL表。某些列被格式化为整数。如果您尝试输入“”,“”或任何不能自动舍入为整数的字符串,将会出现mysql错误。我不希望编辑我的PHP来处理这些更正,而是希望在此表上创建一个BEFORE UPDATE触发器,该字段值将字段值设置为零,如果它是不正确的整数值。在另一个堆栈溢出帖子中,我发现你可以使用ceil(field) = field
来测试整数值。下面是创建触发器语法:MYSQL触发器更正条目
delimiter|
create trigger before_folding_update before update on daily_folding_report
for each row
begin
if ceil(new.jobnum) != new.jobnum then
set new.jobnum = 0;
end if;
end|
如果我把做的事:
update daily_folding_report set jobnum = 'a'
我仍然得到错误:Incorrect integer value: 'a' for column 'jobnum' at row 1.
没有任何人知道我能做到这一点?
只是一个小实验。我经常有多个程序访问同一个表。我总是喜欢更强大的解决方案。是的,如果这种触发方法是不可能的,我会毫无疑问地改变我的PHP代码。 –
那么,MySQL会希望'new.jobnum'在它启动触发器之前是一个整数,以避免触发器发疯,因为它拥有它不应该有的东西。 –
是的,我看到你在说什么,但是我已经做了一个触发器,如果没有在插入查询中给出一个主键,那么它将给出一个主键的值。这是当我有一个特殊的主键字段不是自动递增的。 –