添加限制 NOT NULL 在列中

我用 PHPMyAdmin 并尝试添加限制 NOT NULL 在我的桌子的列中。

PHPMyAdmin 拿我的下一个请求 :


ALTER TABLE `wall` MODIFY `token_message` varchar/40/ NOT NULL;


但我仍然可以插入空字符串 /=NULL/, 我不明白为什么。

PS : 如果您要给我一些其他要求添加此限制的请求,请注意我尝试过这些 3, 谁不在我的身上工作 PHPMyAdmin /错误类型: #1064 - 你的语法中有一个错误 SQL; 查看指南/ :


ALTER TABLE `wall` ALTER COLUMN `token_message` SET NOT NULL;
ALTER TABLE `wall` ALTER COLUMN `token_message` varchar/40/ NOT NULL;
ALTER TABLE `wall` MODIFY `token_message` CONSTRAINTS token_message_not_null NOT NULL;
已邀请:

喜特乐

赞同来自:

你写了 "I can still insert empty strings /=NULL/,", 听起来像误解。 在 SQL 才计算空线,直到 NULL, 或相反亦然。 尝试插入空字符串并制作
SELECT from wall where token_message is NULL

. 您必须返回零线。 然后尝试在您指定的位置进行插入
NULL

/没有Quavichek./ 作为您列的值,您必须收到预期的错误消息。

如果这些测试按预期工作,一切都是按顺序的,您的问题实际上是您想要防止插入空线的事实。 退房
https://coderoad.ru/2514178/
有关建议或仅在请求之前检查检查期间的空线是否存在。

喜特乐

赞同来自:

句法 MySQL column alter 它要求您完全过度过了列。 您不能简单地更改一个列属性,必须完全更改其定义:


ALTER TABLE wall MODIFY token_message varchar/40/ NOT NULL default ''


唯一允许的“set”版本是默认值的更改。

关联:
http://dev.mysql.com/doc/refma ... .html

小明明

赞同来自:

我认为这是清洁输入数据的问题。 如之前提到 octern, 空线 / " / 不是价值 NULL 在 sql. 应对这件事的最佳方法是允许只能通过删除空字符串的存储过程,即使是空格的更新:


CREATE PROC InsertIntoMyDb /@MyVarChar VARCHAR/2000// AS

SET @MyVarChar = NULLIF/RTRIM/LTRIM/@MyVarChar//, ''/

INSERT INTO [TBL] /MyVarChar/
VALUES @MyVarChar


这将任意数量的空格与空字符串TRUETATEATSTEATSTEATS,转动空字符串 NULL, 然后不会允许插入值 NULL 基于您已经拥有的限制。

君笑尘

赞同来自:

尝试使用此请求。


Alter table table_name 
change column_name column_name datatype/length/ definition


IE,


Alter table wall 
change tocken_message tocken_message varchar/40/ NOT NULL DEFAULT

要回复问题请先登录注册