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

防止MySQL将隐式默认值插入非null列

秋光熙
2023-03-14
问题内容

我正在尝试使用多个插入(在一条语句中),并且我具有此表结构

CREATE TABLE Scores
(
  studentID varchar(50) not null,
  score int
)
ENGINE = InnoDB

我的查询:

INSERT INTO Scores Values
('Barry', 45),
(NULL, 41),
('Jones', 53)

由于[StudentID]列不接受NULL,因此该语句(我预期是)应该失败。问题是MySQL在第2行中插入了空字符串(’‘)…,并允许其余的继续。


问题答案:

问题:

SET SQL_MODE='STRICT_ALL_TABLES'

或放

SQL_MODE='STRICT_ALL_TABLES'

[mysqld]my.cnf(然后重新启动MySQL)。



 类似资料:
  • 我在MySQL数据库中有一个表,其中包含一个默认值的列,在数据库端使用phpMyAdmin定义。当我使用HiberNate插入新行时,我得到这个错误: 通用域名格式。mysql。jdbc。例外。jdbc4。MySQLIntegrityConstraintViolationException:列“status”不能为null 我还需要做些什么来使用默认值吗? 实体

  • 问题内容: 我有使用UUID的表。我希望能够插入有或没有UUID的新行,因为有时客户端有时会生成UUID。 每个表的核心是这样的: 我正在尝试使用一个函数来插入行。我希望能够提供一个NULL ID并获取默认值(生成的UUID)。我有这样的事情: 我已经试过了: 还有这个: 这有效,但是重复了gen_random_uuid()代码: 同样也可以,但是存在相同的问题: 有没有一种方法可以不必重复执行代

  • 问题内容: 我在MySQL中有一个表,其中有几列具有指定的默认值,但是当我尝试插入行时(未为这些默认列指定值),它抛出错误,提示我无法插入NULL值。 这是表格示例; 它抱怨TimeZoneId,当我填充TimeZoneId时,它抱怨CultureInforId。 我正在使用MySQL版本:5.1.43-community 这是我尝试插入的插入查询,是从NHibernate Profiler中获取

  • 列插入和更新默认值是指创建 默认值 对于一行中的特定列,INSERT或UPDATE语句正在对该行执行,如果 没有为该列的INSERT或UPDATE语句提供值 . 也就是说,如果一个表有一个名为“timestamp”的列,并且INSERT语句继续执行,但不包括该列的值,则INSERT default将创建一个新值,例如current time,用作要插入“timestamp”列中的值。如果声明 do

  • 本文向大家介绍在MySQL中仅使用默认值插入行,包括了在MySQL中仅使用默认值插入行的使用技巧和注意事项,需要的朋友参考一下 在创建表时使用DEFAULT关键字,只要您不为该列提供值,它将插入默认值。 让我们首先创建一个表。在这里,对于ClientAge,我们设置了默认值24:首先让我们创建一个表。在这里,对于ClientAge,我们设置了默认值24- 使用insert命令在表中插入一些记录。对

  • 主要内容:在创建表时设置默认值约束,在修改表时添加默认值约束,删除默认值约束默认值(Default)的完整称呼是“默认值约束(Default Constraint)”,用来指定某列的默认值。在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。 例如,员工信息表中,部门位置在北京的较多,那么部门位置就可以默认为“北京”,系统就会自动为这个字段赋值为“北京”。 默认值约束通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误。 在