当我试图改变一个列的数据类型并设置一个新的默认值时,我得到了以下错误:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
错误1064(42000):你有一个错误的SQL语法;检查 右边是MySQL服务器版本对应的手册 语法使用'VARCHAR(255) NOT NULL SET DEFAULT '{} "在第一行
当我试图改变一个列的数据类型并设置一个新的默认值时,我得到了以下错误:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
错误1064(42000):你有一个错误的SQL语法;检查 右边是MySQL服务器版本对应的手册 语法使用'VARCHAR(255) NOT NULL SET DEFAULT '{} "在第一行
当前回答
作为后续,如果你只是想设置一个默认值,你可以使用ALTER ..集语法。别把其他东西都放进去。如果要放入列定义的其余部分,请根据接受的答案使用MODIFY或CHANGE语法。
不管怎样,设置默认列的ALTER语法(因为这是我来这里时所寻找的):
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'literal';
“literal”也可以是一个数字(例如. ...)设置默认0),我还没有尝试过…设置默认的CURRENT_TIMESTAMP但是为什么不呢?
其他回答
默认的CURRENT_TIMESTAMP:
ALTER TABLE tablename
CHANGE COLUMN columnname1 columname1 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CHANGE COLUMN columnname2 columname2 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
请注意双columnname声明
删除默认CURRENT_TIMESTAMP:
ALTER TABLE tablename
ALTER COLUMN columnname1 DROP DEFAULT,
ALTER COLUMN columnname2 DROPT DEFAULT;
使用这种方法:-
修改表foobar_data 修改字段字段(255)不设NULL
如果要为已创建的列添加默认值,请执行以下操作 这对我来说很管用:
ALTER TABLE Persons
ALTER credit SET DEFAULT 0.0;
如果上述方法对你不起作用(即:你正在使用新的SQL或Azure),请尝试以下方法:
1)删除现有的列约束(如果有):
ALTER TABLE [table_name] DROP CONSTRAINT DF_my_constraint
2)创建一个新的:
ALTER TABLE [table_name] ADD CONSTRAINT DF_my_constraint DEFAULT getdate() FOR column_name;
作为后续,如果你只是想设置一个默认值,你可以使用ALTER ..集语法。别把其他东西都放进去。如果要放入列定义的其余部分,请根据接受的答案使用MODIFY或CHANGE语法。
不管怎样,设置默认列的ALTER语法(因为这是我来这里时所寻找的):
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'literal';
“literal”也可以是一个数字(例如. ...)设置默认0),我还没有尝试过…设置默认的CURRENT_TIMESTAMP但是为什么不呢?