Я хочу ограничить значение поля в строке таблицы определенным диапазоном. Можно ли ограничить поле отношений field_level до [0.00 до 1.00]?Хотите ограничить значение поля MySQL определенным диапазоном (десятичные значения)
В настоящее время я использую DECIMAL (2,2), это не позволило бы DECIMAL (1,2), поскольку M должно быть> = D. Я предполагаю, что тип данных DECIMAL (2,2) будет фактически разрешить значения от 00.00 до 99.99?
CREATE TABLE relationships (
from_user_id MEDIUMINT UNSIGNED NOT NULL,
to_user_id MEDIUMINT UNSIGNED NOT NULL,
relationship_level DECIMAL(2,2) UNSIGNED NOT NULL,
PRIMARY KEY (from_user_id, to_user_id),
FOREIGN KEY (from_user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (to_user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION,
INDEX relationship_from_to (to_user_id, from_user_id, relationship_level)
) ENGINE = INNODB;
Есть ли лучший способ сделать это, может ли кто-либо предвидеть какие-либо ограничения?
Большое спасибо!
Если вы действительно хотите, чтобы ограничить значения от '0.00 '' '1.00', вы должны использовать' DECIMAL (3,2) 'тип данных и FK, ссылаясь на« стабильную »(справочную) таблицу, всего на 101 строку. Как ответ на ваш другой вопрос: [Ограничьте значение типа данных MySQL до определенного диапазона] (http://stackoverflow.com/questions/9249695/limit-the-value-of-a-mysql-datatype-to -a-specific-range-предпочтительно-not-enum) –
Отлично. Я предполагал, что это будет связано с чем-то похожим на это (с FK, ссылающимся на другую таблицу, ограничивающую диапазон). Мне просто интересно, существует ли более эффективный метод для предыдущего подхода. Большое спасибо. – leokennedy
Есть еще одна возможность, но я не использовал ее, поэтому я не знаю никаких проблем. Определите обновляемый вид с помощью опции «WITH CHECK OPTION». Но тогда вам придется использовать только этот вид вместо таблицы (по крайней мере для вложений и обновлений): [CREATE VIEW Syntax] (http://dev.mysql.com/doc/refman/5.1/en/create -view.html) –