如何将mysql表列限制为特定值

时间:2015-12-15 12:24:29

标签: mysql database

我试图将mySql表格列限制为 device_type android ios 。在表格结构中,我将列 device_type 设置为枚举,其值为 android ios 。 但是在插入其他像xyz时,它没有给出任何错误或异常,只是将列留空。

有没有办法将列限制为特定值?

1 个答案:

答案 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),但这并不是获得所需功能所必需的。