来自另一个表列的MySQL枚举列

时间:2009-06-14 06:37:01

标签: mysql enums lookup

我确信这完全不可能或非常简单:

如果我正在创建一个表,并且我希望其中一个列具有有限的选项,那么我似乎使用ENUM或SET值类型。但我必须在那一刻定义可能的值。如果我有另一个包含两列,主键列和数据列的表,并且我希望将新表的ENUM设置为现有列的主键,该怎么办?

我确信我可以直接写入值,但理想情况下我需要的是将新值输入到列表中以及使用枚举列的表来接受值选择将包括添加到该列表中的任何新内容。

这是否可以在每次将某些内容添加到列表时不需要操纵新表的结构?

2 个答案:

答案 0 :(得分:0)

我认为这个链接有帮助: http://dev.mysql.com/doc/refman/5.0/en/enum.html

讨论它 在用户评论中 开始:

“在MySQL 5.0中,您可以将枚举值转换为动态定义的值表,然后有效地提供一种语言无关的方法来处理这种转换(而不是依赖于PHP,Tcl,C,C ++) ,Java等特定代码)。 “

他用存储的PROCEDURE

来做

答案 1 :(得分:0)

最简单的方法是使用没有约束的常规列。如果您对所有当前值感兴趣,请使用DISTINCT查询它们:

select distinct YourColumn from YourTable

这样,您就没有任何维护,可以在表格中存储您喜欢的任何内容。

您提到的外键表也是一个不错的选择。外键将限制原始列。在执行实际插入之前,运行查询以展开“枚举”表:

insert into EnumTable (name)
select 'NewEnumValue'
where not exists (select * from EnumTable where name = 'NewEnumValue')

不确定你到底想要取得什么成就;限制列,但在有人违反限制时自动扩展选择?