我正在使用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'
)面临的问题是,虽然我添加了一个 NOT NULL,但PHP代码空值会在此列中插入约束。
我想避免在任何地方做那件事。那是空的/空白/空格字符/ NULL不应该插入此列。我想从数据库表本身做,而不是在PHP代码中进行修改。
有人可以帮我阻止在此专栏中插入此类值吗?
还有一件事是此表中存在的记录很少,字段'full_name'
中包含 NULL 值。我认为在将 NOT NULL 约束添加到列'full_name'
之前,这些值已经存在。我的另一个疑问是这些NULL
值会影响列吗?
答案 0 :(得分:2)
您可以添加如下检查约束:
full_name VARCHAR(45) CHECK (full_name <> '')
<强>更新强>
正如@vhu所指出的那样:
解析CHECK(),但作为CREATE语句的一部分被忽略。
因此,您必须在users
表的 INSERT 之前添加 TRIGGER 。
此TRIGGER将在INSERT之前被称为 ,他将检查设置为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
是表test
的一列的名称。
注意:此代码由MySQL Workbench生成。