gpt4 book ai didi

php - 如何在 MySQL 数据库表中的字段上添加 'not empty' 约束?

转载 作者:可可西里 更新时间:2023-11-01 08:28:43 29 4
gpt4 key购买 nike

我正在使用 MySQL 数据库服务器**(服务器版本:5.5.40-0ubuntu0.14.04.1-log - (Ubuntu))**。

数据库中有一个名为'users' 的表。在表 'users' 中有一列标题为 'full_name'

下面是对它的约束

Name : full_name
Type : `varchar(255)`
Collation : `latin1_swedish_ci`
Attributes :
Null : No
Default : None
Extra :

我在这个专栏 ('full_name') 中遇到的问题是一些来自 PHP 代码的 empty 值被插入到这个专栏中,尽管我已经添加了一个NOT NULL 约束。

我想避免在任何地方做那件事。即空/空白/空白字符/NULL 不应插入到此列中。我想从数据库表本身进行操作,而不是在 PHP 代码中进行修改。

有人可以帮我防止在此列中插入此类值吗?

还有一件事是,此表中很少有记录在字段 'full_name' 中包含 NULL 值。我认为这些值在我将 NOT NULL 约束添加到列 'full_name' 之前就已存在。我的另一个疑问是这些 NULL 值是否会影响该列?

最佳答案

你可以像这样添加一个检查约束:

full_name VARCHAR(45) CHECK (full_name <> '')

更新:

作为@vhu指出:

CHECK() is parsed but ignored as part of the CREATE statement.

因此您必须在INSERT 之前为您的users 表添加一个TRIGGER

这个 TRIGGER 将在插入 之前 被调用,他将检查设置为 a 的值是否为空。如果为真,a 将被设置为 NULL:

CREATE TRIGGER `test_BINS` BEFORE INSERT ON `test` FOR EACH ROW 
IF new.`a` = '' THEN SET new.`a` = NULL; END IF; END;

test为表名,test_BIN为TRIGGER名,a为表一列名测试

注意:此代码已由 MySQL Workbench 生成。

关于php - 如何在 MySQL 数据库表中的字段上添加 'not empty' 约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326756/

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