MySQL中修改表字段的默認值是一個常見的操作。但是有時候,我們會發現修改后的默認值并沒有生效,這是為什么呢?
原因是因為修改默認值并不是直接影響已經存在的數據,而是在新增數據時才會用到新的默認值。所以如果想讓已有的數據也使用新的默認值,需要對數據進行更新。
以下是示例代碼:
-- 創建一張test表 CREATE TABLE test ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) DEFAULT 'old_name', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 插入一條數據,使用默認值old_name INSERT INTO test (id) VALUES (1); -- 修改字段name的默認值 ALTER TABLE test ALTER name SET DEFAULT 'new_name'; -- 插入一條數據,使用新的默認值new_name INSERT INTO test (id) VALUES (2); -- 更新所有數據,使用新的默認值new_name UPDATE test SET name='new_name' WHERE name='old_name';
在更新已有數據的時候,需要注意數據的類型和長度是否與新的默認值相符合,否則會出現錯誤。
總結一下,MySQL修改表字段的默認值并不會直接影響已經存在的數據,需要通過更新數據才能讓修改后的默認值生效。