Mysql多次插入查询

时间:2015-03-02 13:16:15

标签: php mysql database mysqli

关于mysql数据插入,我遇到了以下问题。这里的电子邮件字段不能为空。在执行以下查询(查询1和2)时,我们期待错误。但是查询1给出了错误,查询2给出了成功。

表格结构

CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(100) NOT NULL,
 `email` varchar(100) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1

查询1:

INSERT INTO `users` (`id`, `name`, `email`) VALUES (NULL, 'manu', NULL);
  

结果: - #1048 - 专栏'电子邮件'不能为空

查询2:

INSERT INTO `users` (`id`, `name`, `email`)
VALUES (NULL, 'manu', NULL),(NULL, 'Jose', NULL);
  

结果:插入了-2行。

Both query returns success.

查询中是否有错误?任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:4)

来自documentation

  

将NULL插入已声明为NOT NULL的列中。对于   多行INSERT语句或INSERT INTO ... SELECT语句,   该列设置为列数据的隐式默认值   类型。数字类型为0,字符串为空字符串('')   类型,以及日期和时间类型的“零”值。插入 ...   SELECT语句的处理方式与多行插入的处理方式相同   因为服务器不会检查SELECT中的结果集   看它是否返回一行。 (对于单行INSERT,没有   将NULL插入NOT NULL列时发生警告。代替,   该陈述失败并出现错误。)