我在MySQL中使用ENUM数据类型并希望重用它,但不在值中重新输入。是否有相当于在C ++中定义类型的C,C ++方法?
我想做以下事情:
DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);
这可能吗?
由于
答案 0 :(得分:42)
没有。 MySQL不支持CREATE DOMAIN
或CREATE TYPE
,例如,PostgreSQL does。
您可能需要再次输入所有名称。您可以通过使用copy& amp;来减轻执行此操作所需的工作。粘贴或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数据类型。
答案 1 :(得分:0)
下面为mysql数据库提供的示例。
CREATE TABLE `data` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`gender` enum('Male','Female') DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci