【发布时间】:2013-04-15 00:53:36
【问题描述】:
我有一个表,在创建表时未指定默认值。 现在我想将默认值更改为''(空字符串)。 当我运行 alter table query 时,它会成功,但如果未指定列值,则仍然在新行插入表上将 NULL 视为默认值。
表架构::
CREATE TABLE `table1` (
`col1` INT(11) NOT NULL AUTO_INCREMENT,
`col2` TEXT,
`col3` INT(11) DEFAULT NULL,
`col4` TINYINT(1) DEFAULT '0',
PRIMARY KEY (`id`)
);
ALTER 查询::
ALTER TABLE `table1` change `col2` `col2` text default '';
【问题讨论】:
-
当 myColumn 为 NULL THEN '' ELSE myColumn END 时的情况
-
我的解决方案最小改变你的数据库结构。
-
你不应该对 col2 应用默认值,因为它的 TEXT 类型并且它不能是 DEFAULT。
-
@realnumber3012 - 除非我误解了你,否则这是查询的一部分;它不会像 OP 请求那样更改列的 DEFAULT 值,因此需要将其合并到向表中添加新行的所有查询中!或者,您可能会将其作为约束的一部分,该约束在对表的任何行更改后起作用,在这种情况下,需要一个完整的答案来说明如何完成。