如何设置mysql默认值NONE

xytpbqjk  于 2023-03-11  发布在  Mysql
关注(0)|答案(4)|浏览(807)

我使用的表“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,可以这样做吗?

mu0hgdu0

mu0hgdu01#

可以将(字符串类型列的)默认值指定为字符串常量,如'NONE',但要注意,这样的值与NULL(表示根本没有值)的含义有很大不同。
Working with NULL Values下所述:
NULL值可能会令人惊讶,直到您习惯它。从概念上讲,NULL表示“丢失的未知值”,它的处理方式与其他值略有不同。
[ deletia ]
使用NULL时的一个常见错误是假设不可能在定义为NOT NULL的列中插入零或空字符串,但事实并非如此,这些实际上是值,而NULL表示“没有值”。
如果您只是希望以某种其他方式向用户表示NULL值,则应该在应用程序的表示层进行处理。

xu3bshqb

xu3bshqb2#

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

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

8wigbo563#

对我来说,当您考虑以下内容时,问题(以及NULL || NOT NULL和默认值之间的关系)就变得更加清楚了:
NOT NULL必需:必须有默认值,否则不允许插入没有指定值的记录(指定默认值,或选择“无”⇒未指定默认值;可能表明您在这两个选项之间的偏好:后一个选项意味着在该字段中没有值的插入应该被错误地拒绝);鉴于:
NULLNOT REQUIRED-NULL表示 * 没有为字段指定值 *,或者,值是未知的。(如果一个字段是“NULL”,那么试图说你不想指定默认值是没有意义的;因为根据空性,即使你没有指定这个字段的值,插入也是允许的!因此这个字段必须有一个默认值:不管它是NULL还是某个特定值)。
如果你使用的是phpMyAdmin,你应该访问相关表的Structure标签页,找到相关的列定义,然后选择“Change”。在“Default”下拉列表中,你会看到选项“None”:选择它,然后按“保存”。2注意一下这个生成的SQL命令,你会看到类似下面的内容:

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

然而,如果我们试图在用户界面中指定,默认值应该是“None”,但是应该允许NULL;则默认值将改为“”(空字符串)或“0000-00 - 00 00:00:00”(对于DATETIME字段)等。因此,此处的关键是列(字段)是否为NULL ABLE!
这个“None”选项可能部分是phpMyAdmin用来表示底层数据库中实际发生的事情的抽象的产物(这是不同的)。
将字段更改为NOT NULL类型之前;首先检查现有值,并确保它们将以您认可的方式自动更改。
换句话说:NULL/NOT NULL以及默认值;基本上是相互关联的:用户界面不能通过限制可以指定的值的组合来有效地表示这种关系,这在人体工程学上是有缺陷的。phpMyAdmin和其他工具可能在这方面需要改进。

wbrvyc0a

wbrvyc0a4#

我可能是错的,但我认为最初的帖子是问如何删除一个默认值,而不是添加字符串文字“none”。如果是这样,你可以这样做:

ALTER TABLE media_content ALTER COLUMN sourceimage DROP DEFAULT;

相关问题