繁体   English   中英

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

[英]MySQL Alter table add column with default of 1

我已经阅读了有关MySQL ALTER TABLE的大多数文章,但是找不到我的问题的答案。

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

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

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

有任何想法吗

非常感谢您的宝贵时间。

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

update hist
    set s1 = '1';

这在MySQL中并没有得到很好的记录 ,但建议使用。

仅修改表元数据而不修改表数据的更改是立即进行的,因为服务器仅需要更改表.frm文件,而无需更改表内容。 以下更改是可以通过这种方式进行的快速更改:

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

添加列确实需要表副本。 但是旧的值不受影响。

我相信将列添加到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;

似乎您的应用程序代码中的某些内容将S1字段设置为空字符串。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM