在MySQL中创建ENUM变量类型

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (24)

我在MySQL中使用ENUM数据类型,希望重用它,但不想在值中重新键入。是否有一种与C,C++在MySQL中定义类型的方法等价的方法?

我想做以下几点:

DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);

这个是可能的吗?

谢谢

提问于
用户回答回答于

没有。MySQL不支持CREATE DOMAINCREATE TYPE例如,PostgreSQL...

你可能得再输入一次所有的名字。可以通过使用复制粘贴或SQL脚本来减轻所需的工作。

也可以使用INFORMATION_SCHEMA表,以获取ENUM定义的文本,然后将其插入到新的CREATE TABLE声明。

也可以使用CREATE TABLE AS以创造性的方式复制类型定义。下面是一个演示:

CREATE TABLE foo ( f ENUM('abc', 'xyz') );
CREATE TABLE bar AS SELECT f AS b FROM foo;
SHOW CREATE TABLE bar;

产出:

CREATE TABLE `bar` (
  `b` enum('abc','xyz') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

最后,我建议如果你的ENUM中有许多值(因为正在寻找避免键入它们的解决方案),那么可能应该使用一个查找表而不是ENUM数据类型。

扫码关注云+社区