20
我在MySQL中使用ENUM数据类型,并且希望重用它,但不重新输入值。是否有与C,C++中定义MySQL类型的方法等价的方法?在MySQL中创建ENUM变量类型
我想做到以下几点:
DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);
这可能吗?
由于
我在MySQL中使用ENUM数据类型,并且希望重用它,但不重新输入值。是否有与C,C++中定义MySQL类型的方法等价的方法?在MySQL中创建ENUM变量类型
我想做到以下几点:
DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);
这可能吗?
由于
号MySQL不支持CREATE DOMAIN
或CREATE 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数据类型。