我在mysql表中有两列由用户首选项设置:
custom_string VARCHAR(255) NOT NULL
items_per_row TINYINT UNSIGNED NOT NULL DEFAULT '5'
实施例
+--------------------------------------+
| preferences |
+--------------------------------------+
| id | custom_string | items_per_group |
+--------------------------------------+
| 1 | TRINKETS | 8 |
+--------------------------------------+
| 2 | | 5 |
+--------------------------------------+
| 3 | MYSTUFF | 7 |
+--------------------------------------+
items_per_row
是必填字段。 custom_string
字段可选用于个性化列表中分组项的显示方式。
用户可以随时更新这些首选项。以下是如何显示项目的粗略示例:
我想找到一种约束每个用户custom_string
长度的方法,这样如果它不是空白,它的长度必须与对应的items_per_group
完全相同使用javascript和PHP可以很容易地验证用户输入,并且如果数据不符合此要求,则可以防止数据输入数据库,但是,是否有办法设置此值mysql中的约束是否会被拒绝?
答案 0 :(得分:2)
MySQL没有实现check
约束。有了它们,这很容易:
alter table preferences add constraint chk_preferences_custom
check (custom_string is null or length(custom_string) = items_per_group);
MySQL中唯一的选择就是为此目的使用触发器。
实际上,在插入/更新custom_string
时,在应用程序级别检查可能更简单。