MySQL Alter表添加默认值为1的列

时间:2016-07-17 13:37:03

标签: mysql

我已阅读有关MySQL ALTER TABLE的大部分帖子,但无法找到我的问题的答案。

我有一个脚本可以向表中添加一个新列,这样可以正常工作,但我遇到的问题是它没有为新列设置默认值。我错过了什么:

ALTER TABLE Hist ADD S1 VARCHAR( 5 ) DEFAULT '1', ADD comments_S1 TEXT

以上是我正在使用的代码。

任何想法

非常感谢你的时间。

3 个答案:

答案 0 :(得分:1)

唉,default值仅用于新行。旧行获得NULL。因此,只需在alter table之后更新它们:

update hist
    set s1 = '1';

这在MySQL中并不是很好documented,但它有点建议。 。

  

仅修改表元数据而非表数据的更改   立即因为服务器只需要改变表.frm文件,   不要触摸桌面内容。以下更改是快速更改   可以这样做:

     

。 。 。    - 更改列的默认值(NDB表除外)。

添加列 需要表副本。但旧的价值观并未受到影响。

答案 1 :(得分:0)

我相信将列添加到MySQL表的语法是:

ALTER TABLE table_name ADD COLUMN col type DEFAULT 'default';

您的语法中缺少关键字COLUMN。请尝试以下方法:

ALTER TABLE Hist
ADD S1 VARCHAR(5) DEFAULT '1',
ADD comments_S1 TEXT;

答案 2 :(得分:0)

看起来像你的应用程序代码中的东西将S1字段设置为空字符串。

ALTER TABLE Hist
ADD S1 VARCHAR(5) DEFAULT '1' NOT NULL,
ADD comments_S1 TEXT;

它会阻止S1为空并自动将NULL字段更改为'1'