我试图将mySql表格列限制为 device_type 到 android 和 ios 。在表格结构中,我将列 device_type 设置为枚举,其值为 android 和 ios 。 但是在插入其他像xyz时,它没有给出任何错误或异常,只是将列留空。
有没有办法将列限制为特定值?
答案 0 :(得分:0)
我认为解决这个问题的最佳方法是使用外键约束。定义设备类型表:
create table DeviceTypes (
DeviceType varchar(255) primary key
);
insert into DeviceTypes(DeviceType)
select 'android' union all select 'ios';
接下来,您可以添加外键约束来强制执行关系:
alter table t add constraint fk_t_devicetype foreign key (devicetype) references DeviceTypes(DeviceType);
尝试插入不在表中的值将导致插入错误。
请注意,在其他数据库中,您可以使用check
约束执行基本相同的操作。但是,MySQL并没有强制执行这些。你也可以用触发器做同样的事情,但那些可能是一个维护挑战。
此方法还可以轻松添加新设备类型。
此外,我通常会为此目的使用合成密钥(即自动递增的ID),但这并不是获得所需功能所必需的。