如何改变列并更改默认值?

尝试更改列的数据types并设置新的默认值时出现以下错误:

ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}'; 

错误1064(42000):您的SQL语法错误; 检查与您的MySQL服务器版本相对应的手册,以便在第1行使用“VARCHAR(255)NOT NULL SET DEFAULT”{}“附近的正确语法

 ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}'; 

第二种可能性是相同的(感谢juergen_d):

 ALTER TABLE foobar_data CHANGE COLUMN col col VARCHAR(255) NOT NULL DEFAULT '{}'; 

作为一个后续,如果你只是想设置一个默认的,确定你可以使用ALTER .. SET语法。 只是不要把所有其他的东西放在那里。 如果要将列定义的其余部分放入,请按照接受的答案使用MODIFY或CHANGE语法。

无论如何,用于设置列的ALTER语法是默认的,(因为这就是我来这里时所要查找的):

 ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'literal'; 

对于哪个“文字”也可以是一个数字(例如...SET DEFAULT 0 )。 我还没有尝试过...SET DEFAULT CURRENT_TIMESTAMP但为什么不呃?

如果你想为已经创build的列添加默认值,这适用于我:

 ALTER TABLE Persons ALTER credit SET DEFAULT 0.0'; 

如果上述不适用于您(即:您正在使用新的SQL或Azure ),请尝试以下操作:

1)删除现有的列约束(如果有的话):

 ALTER TABLE [table_name] DROP CONSTRAINT DF_my_constraint 

2)创build一个新的:

 ALTER TABLE [table_name] ADD CONSTRAINT DF_my_constraint DEFAULT getdate() FOR column_name; 

这下面为我工作:

 ALTER TABLE name_of_table ADD column_name varchar(50) DEFAULT '0';