如何改变列并更改默认值?
尝试更改列的数据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';