2012-05-08 99 views
5

我想限制整數字段可以包含的數字的數量。例如,我希望該字段包含長度不超過5的數字,因此99999將是最高有效條目。限制整數數據類型字段長度

這是可能在MySQL中做的嗎?我看過文檔,但沒有找到我的答案。

回答

3

不幸的是,在MySQL中並沒有實現CHECK約束和用戶定義的類型。也許這將在未來的版本中改變。

在那之前,你可以使用觸發器來校正輸入,如果這是一個路要走你:

delimiter // 
CREATE TRIGGER trigger_check BEFORE INSERT ON your_table 
FOR EACH ROW 
BEGIN 
    IF NEW.NUM > 99999 THEN 
     SET NEW.NUM = 0; 
    END IF; 
END 
// 
+1

爲了完整起見,你也可以使用一個外鍵爲整數的表結束於99999。 –

0

這是不可能在數據庫級別進行的。您必須使用存儲過程,或者將該邏輯放入應用程序中。

http://dev.mysql.com/doc/refman/5.5/en/integer-types.html

中等int是你可以得到的最接近。

此外,你可能會看到這樣的事情在某個時刻:

CREATE TABLE blah (col INT (5)); 

這不會做你認爲雖然。這實際上並沒有將場地的長度限制在5個地方。它表示當zerofill被設置在列上時,它應該填充到5個位置。

1

無論何時對數據庫進行更改,您都可以添加觸發器來執行此操作。觸發器將在應用更改之前執行,以驗證它是否正在使用「有效」條目進行更新。如果條目無效,更新可以被拒絕。