簡體   English   中英

將新的 NOT NULL 列添加到包含數據的現有表

[英]Adding a new NOT NULL column to an existing Table with data

我想在現有表中添加一個新的NOT NULL列,該表在 MySQL 5.7 中有數據。 我已經看到了這個問題,我正在使用那里建議的解決方案。

我將新列添加為NULL ,填充新列的數據,然后將列從NOT NULL更改為NULL

-- 1. add new column as null
ALTER TABLE `mytable` ADD COLUMN newCol BIT NULL AFTER curCol;

-- 2. populate default data for new column
SET sql_safe_updates = 0;
UPDATE `mytable` SET newCol = 0;
SET sql_safe_updates = 1;

-- 3. change the column to NOT NULL
ALTER TABLE `mytable` ALTER COLUMN newCol BIT NOT NULL;

但是我在最后一個命令中收到以下錯誤:

錯誤代碼:1064。您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,以獲取在第 1 行的“BIT NOT NULL:”附近使用的正確語法

這條 SQL 在 MySQL 中無效:

ALTER TABLE `mytable` ALTER COLUMN newCol BIT NOT NULL;

相反,請考慮:

ALTER TABLE `mytable` MODIFY newCol BIT NOT NULL;

參考: MySQL ALTER TABLE語法

您可以分三個步驟執行此操作:

  1. 添加您的新列(最初,讓它具有NULL值)

     ALTER TABLE my_table ADD COLUMN new_col datatype NULL AFTER cur_col;
  2. 更新表格,使我們的新列中沒有NULL

     UPDATE my_table SET new_col = 0 WHERE new_col IS NULL;
  3. 將我們的新列修改為NOT NULL

     ALTER TABLE my_table MODIFY COLUMN new_col datatype NOT NULL;

參考: StackOverflow-更改列:null 改為非 null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM