mysql enum创建_在MySQL中创建ENUM变量类型

bd96500e110b49cbb3cd949968f18be7.png

I am using an ENUM data type in MySQL and would like to reuse it, but not retype in the values. Is there an equivalent to the C, C++ way of defining types in MySQL?

I would like to do the following:

DEFINE ETYPE ENUM('a','b','c','d');

CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);

Is this possible?

Thanks

解决方案

No. MySQL does not support CREATE DOMAIN or CREATE TYPE as, for example, PostgreSQL does.

You'll probably have to enter all the names again. You can mitigate the work it takes to do this by using copy & paste, or SQL scripts.

You could also use the INFORMATION_SCHEMA tables to get the text of the ENUM definition, and then interpolate that into a new CREATE TABLE statement.

You can also use CREATE TABLE AS in creative ways to copy a type definition. Here's a demonstration:

CREATE TABLE foo ( f ENUM('abc', 'xyz') );

CREATE TABLE bar AS SELECT f AS b FROM foo;

SHOW CREATE TABLE bar;

Outputs:

CREATE TABLE `bar` (

`b` enum('abc','xyz') default NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1

Finally, I suggest that if your ENUM has many values in it (which I'm guessing is true since you're looking for a solution to avoid typing them), you should probably be using a lookup table instead of the ENUM data type.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值