在MySQL中创建ENUM变量类型

jay*_*jay 28 mysql variables enums

我在MySQL中使用ENUM数据类型并希望重用它,但不在值中重新输入.是否有相当于在C中定义类型的C,C++方法?

我想做以下事情:

DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);
Run Code Online (Sandbox Code Playgroud)

这可能吗?

谢谢

Bil*_*win 46

不,MySQL不支持CREATE DOMAIN或者CREATE 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;
Run Code Online (Sandbox Code Playgroud)

输出:

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

最后,我建议如果你的ENUM里面有很多值(我猜测它是正确的,因为你正在寻找避免键入它们的解决方案),你应该使用查找表而不是ENUM数据类型.