如何设置mysql默认值NONE

时间:2012-10-18 07:44:10

标签: mysql default-value

我正在使用包含

列的“media_content”表
id varchar(50) NOT NULL,
shorttitle varchar(200) DEFAULT NULL,
sourceimage blob

稍后我将sourceimage列修改为默认值NULL

ALTER TABLE media_content
MODIFY COLUMN sourceimage VARCHAR(250) DEFAULT NULL;

现在我想将sourceimage列默认为NONE,是否可以这样做?

3 个答案:

答案 0 :(得分:4)

您可以将(字符串类型列的)默认值指定为字符串文字常量,例如'NONE',但请注意,这样的值确实与{{1}具有非常不同的含义}(表示根本没有值)。

正如Working with NULL Values所述:

  

NULL值可能会令人惊讶,直到您习惯它为止。从概念上讲,NULL表示“缺少未知值”,并且与其他值的处理方式略有不同。

     

NULL

     

使用[ deletia ]时的常见错误是假设无法将零或空字符串插入到定义为NULL的列中,但事实并非如此。这些实际上是值,而NOT NULL意味着“没有价值。”

如果您只想以其他方式向用户提供NULL值,则应在应用程序的表示层处理该值。

答案 1 :(得分:3)

使用相同的ALTER语法,默认值可以更改为NONE,如下所示:

ALTER TABLE media_content
MODIFY COLUMN sourceimage VARCHAR(250) DEFAULT 'NONE';

答案 2 :(得分:1)

对我来说,当你考虑这个时,问题(以及NULL || NOT NULL和默认值之间的关系)会变得更清晰:

NOT NULL REQUIRED :必须有一个默认值,否则不允许没有指定值的记录插入(指定默认值,或选择“无”⇒没有指定默认值;可能表示您在这两个选项之间的偏好:后一个选项意味着在此字段中没有值的插入应该被拒绝并出现错误);而:

NULL不需要 - NULL表示某个字段没有指定值,或者该值未知。 (如果一个字段是“NULLable”,那么试图说你不想指定默认值是无稽之谈;因为根据可空性,即使你没有指定这个字段,也会允许插入因此,该字段必须具有默认值:无论是NULL还是某个特定值。)

如果您使用的是phpMyAdmin,则应访问相关表格的“结构”选项卡,找到相关的列定义,然后选择“更改”。在“默认”下拉列表中,您将看到选项“无”:选择该选项,然后按“保存”。记下这个生成的SQL命令,你会看到类似这样的东西:

ALTER TABLE  `…_tbl` CHANGE  `…_fld` `…_fld` TEXT NOT NULL;

但是,如果我们尝试在用户界面中指定默认值应为“None”,但应允许NULL;然后默认将改为“”(空字符串)或“0000-00-00 00:00:00”(在DATETIME字段的情况下),等等。所以这里的关键是列是否(字段)是NULL ABLE与否!

这个“无”选项可能部分是phpMyAdmin用来表示底层数据库中实际发生的抽象的一个人工制品(这是不同的东西)。

在将字段更改为NOT NULL类型之前;首先检查现有值,并确保它们将以您批准的方式自动更改。

换句话说:NULL / NOT NULL和默认值;本质上是彼此相关的:通过约束您可以指定的值组合来有效地表示此关系的用户界面在人体工程学上是不足的。 phpMyAdmin和其他工具可以在这方面得到改进。