我试图将mySql表列(如device_type )限制为android和ios。在表结构中,我将列device_type设置为使用值、android、和ios。但是,在插入其他类似xyz的内容时,它并没有给出任何错误或异常,它只是将列保留为空。
是否有任何方法将列限制为特定值?
发布于 2015-12-15 12:27:21
我认为最好的方法是使用外键约束。为设备类型定义表:
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),但这并不是获得所需功能所必需的。
https://stackoverflow.com/questions/34289249
复制相似问题