gpt4 book ai didi

MySQL 列设置为 NOT NULL 但仍允许 NULL 值

转载 作者:行者123 更新时间:2023-11-29 01:06:12 24 4
gpt4 key购买 nike

我将每一列设置为 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 的值。

要防止出现空字符串,您必须使用 triggers ,或者在执行 INSERT 查询之前检查服务器端编程语言以将空字符串转换为 NULLINSERT 的示例触发器可能类似于:(这只是一个示例)

CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;

关于MySQL 列设置为 NOT NULL 但仍允许 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18908309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com