当前位置: 首页 > 面试题库 >

如何在包含空值的列上添加非空约束

督翰学
2023-03-14
问题内容

我有一个表,其中的列包含一些空值。我想NOT NULL在该列上添加约束,而不将现有的null更新为非null值。我想保留现有的空值,并检查将来的行,它们是否包含此列的非空值。这可能吗?如何?


问题答案:

您可以添加未验证的约束-它不会查看现有行,但是会检查是否有任何新行或更新行。

ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;

请注意,除非满足约束,否则您将无法更新现有行。

另外,请注意,不利之处在于,优化器在制定计划时将无法利用此约束-它必须假设某些行可能仍为null。



 类似资料:
  • 问题内容: 我有一个名为“ Person”的表名,下面是列名 我忘了约束。 现在,我尝试使用以下查询将“ 约束” 添加到名为的现有列中, 我收到语法错误…。 问题答案: 只需使用查询并将其添加到您现有的列定义中即可。例如: 请注意:使用查询时,您需要再次指定 完整的 列定义。例如,如果您的列具有值或列注释,则需要在语句中与数据类型和一起指定它,否则它将丢失。防止此类情况发生的最安全方法是从查询的输

  • 问题内容: 我在这里阅读了很多关于stackoverflow和google的其他文章,但找不到解决方案。 当我将模型从CharField更改为ForeignKey时,一切都开始了。我收到的错误是: 我的模型如下: 之前不存在场所_国家/地区,因此迁移成功完成。但是,place_city是一个CharField。 我对迁移文件进行了一些更改,以便它将执行sql,如下所示: 提前致谢! 更新:我的新迁

  • 我有亲子关系。当我要在标识符相同时插入,我希望它更新。 这是我的服务: 当我调试更新时,它说 错误:“ms\u exploded\u header\u id”列中的null值违反非null约束详细信息:失败行包含(20,333,2,null,null,null,null,null,null,null,null,null)。 虽然我已经按应有的方式插入了存储库,但在保存新存储库时没有问题,但在更新父

  • 问题内容: 是否可以添加我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说: ALTER TABLE仅允许添加可以包含空值或指定DEFAULT定义的列,或者要添加的列是Identity或timestamp列,或者如果不满足任何先前条件,则该表必须为空才能允许添加本专栏的内容。无法将列“ test”添加到非空表“ shiplist”中,因为它不满足这些条件。 如果

  • 我正在尝试使用Liquibase将一个数据库转换为另一个数据库。我有两个数据库,希望在其中一个数据库上运行SQL脚本,使其与另一个数据库相同。我正在使用Liquibase版本3.4.1和两个H2数据库。为了生成SQL脚本,我首先使用diffChangeLog命令生成diff xml,该命令运行良好。(实际上有一个问题:它生成的列类型为VARCHAR,autoIncrement设置为true,但可以

  • 主要内容:在创建表时设置非空约束,在修改表时添加非空约束,删除非空约束MySQL非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。 比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约