2010-07-01 187 views
0

當枚舉中不包含的值被分配給該字段時,MySQL表中是否有方法分配缺省值?當枚舉值不在枚舉中時賦予枚舉的默認值

CREATE TABLE `comments` (
    `status` enum('approved','moderated','unmoderated') NOT NULL DEFAULT 'unmoderated' 
); 

工作,如果status不是在創建時定義,但如果你在枚舉或NULL將其設置爲不的東西,它是「空白」(似乎不爲NULL)。如果我將它設置爲NULL,我會期望它是'unmoderated',因爲它不能爲空。不知道這是否有道理。在插入之前是否需要清理數據以確保枚舉中的值是否存在?

UPDATE comments SET status = NULL; 
UPDATE comments SET status = 'not_in_there'; 

回答

2

如果你嘗試,而不是在定義列表然後將它插入爲指數0,一個空字符串的ENUM字段設置爲一個值。如果沒有爲該列指定任何值,則默認值纔會起作用。

我想做你需要的東西,你需要首先檢查代碼中的無效值,然後在查詢中包含你想要的值。