2009-09-22 126 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數據類型。