2009-09-22 63 views
20

我在MySQL中使用ENUM数据类型,并且希望重用它,但不重新输入值。是否有与C,C++中定义MySQL类型的方法等价的方法?在MySQL中创建ENUM变量类型

我想做到以下几点:

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

这可能吗?

由于

回答

32

号MySQL不支持CREATE DOMAINCREATE TYPE,例如,PostgreSQL的does

您可能需要重新输入所有名称。您可以通过使用复制&粘贴或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数据类型。