2009-09-22 62 views
20

Tôi đang sử dụng loại dữ liệu ENUM trong MySQL và muốn sử dụng lại nó, nhưng không nhập lại các giá trị. Có tương đương với cách C, C++ để định nghĩa các kiểu trong MySQL không?Tạo loại biến ENUM trong MySQL

Tôi muốn làm như sau:

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

Đây có phải là có thể?

Cảm ơn

Trả lời

32

số MySQL không hỗ trợ CREATE DOMAIN hoặc CREATE TYPE như, ví dụ, PostgreSQL does.

Có thể bạn sẽ phải nhập lại tất cả các tên. Bạn có thể giảm thiểu công việc cần thiết để thực hiện việc này bằng cách sử dụng các tập lệnh sao chép & hoặc SQL.

Bạn cũng có thể sử dụng các bảng INFORMATION_SCHEMA để lấy văn bản định nghĩa ENUM và sau đó nội suy thành câu lệnh CREATE TABLE mới.

Bạn cũng có thể sử dụng CREATE TABLE AS theo các cách sáng tạo để sao chép định nghĩa loại. Dưới đây là một cuộc biểu tình:

CREATE TABLE foo (f ENUM('abc', 'xyz')); 
CREATE TABLE bar AS SELECT f AS b FROM foo; 
SHOW CREATE TABLE bar; 

Đầu ra:

CREATE TABLE `bar` (
    `b` enum('abc','xyz') default NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

Cuối cùng, tôi đề nghị rằng nếu ENUM của bạn có nhiều giá trị trong nó (mà tôi đoán là đúng vì bạn đang tìm kiếm một giải pháp cho tránh gõ chúng), có lẽ bạn nên sử dụng bảng tra cứu thay vì kiểu dữ liệu ENUM.