我将每个列都设置为,NOT NULL
但是由于某种原因,我仍然能够NULL
在每个列中添加一个值。这是我的表信息(创建语法):
CREATE TABLE `addresses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address` varchar(100) NOT NULL,
`city` varchar(100) NOT NULL,
`state` varchar(4) NOT NULL,
`zip` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4545 DEFAULT CHARSET=utf8;
这是一个有效的示例INSERT
:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES ('', '', '', '');
有什么想法为什么会这样?
您要插入空字符串,而空字符串不是NULL
,要检查NULL
错误,请执行以下操作:
INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
你会看到错误。该NOT NULL
只对那些不值检查NULL
。
为了防止空字符串,您必须使用触发器,或者NULL
在执行INSERT
查询之前对服务器端编程语言进行检查以将空字符串转换为。的示例触发器INSERT
可能类似于:(这只是一个示例)
CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;
我试图执行我的保存endpoint到邮递员,我收到这个错误: 原因:org.h2.jdbc.JdbcBatchUpdateException: NULL不允许列CREATION_DATE;SQL语句:插入到客户(authentication_uid、creation_date、customer_uid、default_payment_method_uid、guid、last_edit_date、p
在java链表中,如果head=null,则LinkedList为空。但是,当我将head设置为null并打印tail的值时,会显示该值。为什么我们说head==null意味着LinkedList是空的?当链表应该为空时,为什么显示尾部值?我们不也应该检查id(tail==null)吗? 主类 输出:5- 45
问题内容: 我拼凑了一个图片网站。基本模式是非常简单的MySQL,但是在尝试表示与图像相关联的可能的管理标志(“不合适”,“受版权保护”等)时遇到了一些麻烦。我目前的概念如下: (为了方便阅读而被截断;我发誓要搭配各种外键和索引) 在标志类型的查找表上是外键,并且您可以想象 应该 在上外键。现在的问题是,当第一次发出标志时,没有逻辑解析类型(我将其声明为的一种很好的用法)。但是,如果设置了值,则应
我将null传递给json.parse(),虽然第一个参数文档中说明它应该是一个字符串值,但它仍然可以提供。 为什么这不会抛出一个错误,即使文档声明这是用于字符串的,这能在多个浏览器中安全可靠地使用吗?
问题内容: 最初,表“ MyTable”的定义如下: 如何以允许“ Col 3”列为NULL的方式更新它? 问题答案: 以下MySQL语句应修改您的列以接受NULL。
问题内容: 我正在将CSV插入表中。我对CSV中的内容没有任何控制,很多字段为空白。例如,在我的第一条记录中,“ baths_full”字段为空(两个逗号背对背)。 在运行MySQL 5.5.37的生产服务器上,它将带有的记录插入为空字段。在运行MySQL 5.6.19的本地计算机上,出现以下错误: 奇怪的是,表的架构是相同的。实际上,我使用生产机器的导出来创建本地数据库。 该字段设置为Tin