问题描述
我想将字段中可以存储的数据类型值限制为特定范围的整数值:[0,10].
I want to limit the datatype value that can be stored within a field to a specific range of integer values: [0,10].
在 PHP 脚本中的用户输入时,我验证并清理数据以确保它在 0 到 10 的范围内.但是,有没有办法通过某种数据类型或约束?
On user input within a PHP script I validate and sanitise the data to make sure it is within the range 0 to 10. However, is there a way to ensure this remains true within the votes table itself via some sort of datatype or constraint?
目前我将 int 值存储在一个 UNSIGNED TINYINT 中,当然它的范围是 0-255.我知道 ENUM 作为一种选择.但是,我读过使用数字时不建议使用:http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
At the moment I store the int value within an UNSIGNED TINYINT which of course has the range of 0-255. I am aware of ENUM as an option. However, I have read that it is not advisable when using numbers: http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
SQL:
希望有人能帮忙.
推荐答案
您可以创建一个允许投票值的表并在您的投票表中添加一个外键,因此当您尝试使用 user_vote 值而不是现有值插入投票时在您的 allowed_votes 表中,您会收到一个约束失败错误:
You can create a table of allowed vote values and add a foreign key in your votes table, so when you try to insert a vote with user_vote value other than existing in your allowed_votes table you get a constraint fail error:
这篇关于将 MySQL 数据类型的值限制在特定范围内(最好不是 ENUM)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!