2011-11-29 57 views
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.沒有任何人知道我能做到這一點?

回答

1

據我所知,所有的值檢查都是在觸發器之前完成的。你爲什麼不在你的PHP代碼中這樣做?

+0

只是一個小實驗。我經常有多個程序訪問同一個表。我總是喜歡更強大的解決方案。是的,如果這種觸發方法是不可能的,我會毫無疑問地改變我的PHP代碼。 –

+0

那麼,MySQL會希望'new.jobnum'在它啓動觸發器之前是一個整數,以避免觸發器發瘋,因爲它擁有它不應該有的東西。 –

+0

是的,我看到你在說什麼,但是我已經做了一個觸發器,如果​​沒有在插入查詢中給出一個主鍵,那麼它將給出一個主鍵的值。這是當我有一個特殊的主鍵字段不是自動遞增的。 –