将新的 NOT NULL 列添加到包含数据的现有表中

问题描述 投票:0回答:2

我想添加一个新的

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
2个回答
3
投票

这段SQL在MySQL中无效:

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

相反,请考虑:

ALTER TABLE `mytable` MODIFY newCol BIT NOT NULL;

参考资料:MySQL

ALTER TABLE
语法


1
投票

您可以分三步完成:

  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 到 not null

© www.soinside.com 2019 - 2024. All rights reserved.