Значения полей MySQL, можно ли определить число с плавающей запятой вне числа цифр? - PullRequest
1 голос
/ 15 сентября 2009

Три вопроса, все в основном одинаковые:

Итак, в моей таблице есть поле, и его тип данных float. Однако существует только 64 возможных значения в диапазоне от 0,25 до 16,0 (с шагом 0,25), и я хотел бы разрешить эти значения только как дополнительный уровень проверки.

  1. Могу ли я установить поле больше нуля?

  2. Можно ли установить минимальное и максимальное значение для поля с плавающей запятой?

  3. Можно ли каким-то образом установить приращения?

Или, я должен рассмотреть:

а) установить его как целое число и умножить любой вход на 4, прежде чем он входит, и установить максимальное значение 64.

б) используя действительно длинное перечисление?

Ответы [ 3 ]

2 голосов
/ 15 сентября 2009

Обычно это делается с помощью ПРОВЕРКИ. К сожалению, MySql не поддерживает CHECK CONSTRAINT. Вместо этого вы можете использовать BEFORE UPDATE TRIGGER ...

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 голосов
/ 15 сентября 2009

Лично я бы использовал DECIMAL, а не FLOAT. FLOAT является лишь приблизительным значением вашей ценности, а ваши значения действительно специфичны.

для принудительного применения определенных значений, я бы создал таблицу поиска с этими 64 значениями и использовал бы внешний ключ.

0 голосов
/ 15 сентября 2009

Как правило, такие вещи применяются в клиентском приложении. Тем не менее, если вы ищете «целостность данных на сервере» для mysql, вы найдете то, что вам нужно.

...