2009-09-15 16 views
1

三個問題,基本都一樣:MySQL字段值,可以定義一個浮點數超出數字計數嗎?

所以我的表有一個字段,它的數據類型是float。只有64個可能的值,但是,從0.25到16.0(0.25的增量),我想只允許這些值作爲額外的驗證層。

  1. 我可以設置字段大於零嗎?

  2. 我可以爲float字段設置最小值和最大值嗎?

  3. 我可以用某種方式設置增量嗎?

或者,我應該考慮:

a)設定它爲一個整數和它進入在之前的任何輸入乘以4,並設定爲64

B A的最大值)使用

一個非常長的枚舉?

回答

2

這通常使用CHECK CONSTRAINT完成。不幸的是MySql不支持CHECK CONSTRAINT。你可以使用BEFORE UPDATE觸發器,而不是...

CREATE TRIGGER t BEFORE UPDATE ON yourTable 
FOR EACH ROW BEGIN 
IF NEW.name --here you put a check for a valid value 
    SET NEW.name = 1/0;  --an error is raised - no insert 
END IF; 
0

通常這樣的事情在客戶端應用程序強制執行。但是,如果您爲mysql搜索「服務器強制執行的數據完整性」,則會發現一些您需要的內容。

+0

通常?我會說任何一個數據庫都可以執行的應該在數據庫級別上執行,而不是在應用程序中執行。 – Joey

+0

我同意,但與數據庫級別的驗證相比,應用程序級別相當有限。 – dave

0

我個人會使用DECIMAL,而不是FLOAT。 FLOAT只是您的價值的近似值,而您的價值則非常具體。

強制執行特定值,我會創建一個查找表,只有那些64值,並使用外鍵。

相關問題