当前位置: 首页 > 面试题库 >

防止在MySQL中插入空字符串的约束

东方飞捷
2023-03-14
问题内容

在这个问题中,我学习了如何防止插入NULL值。但是,不幸的是,无论如何都会插入一个空字符串。除了在PHP方面防止这种情况外,我想使用类似数据库约束的方法来防止这种情况。当然,有必要在应用程序方面进行检查,但是我希望双方都进行检查。

我被告知,无论应用程序在与您的数据库进行通信,它都不能在其中插入基本上错误的数据。所以…

CREATE TABLE IF NOT EXISTS tblFoo (
  foo_id int(11) NOT NULL AUTO_INCREMENT,
  foo_test varchar(50) NOT NULL,
  PRIMARY KEY (foo_id)
);

仍将允许我执行此插入操作:

INSERT INTO tblFoo (foo_test) VALUES ('');

我想防止。


问题答案:

通常,您可以使用CHECK约束来做到这一点:

foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> '')

不幸的是,MySQL对约束的支持有限。从MySQL参考手册:

CHECK子句已解析,但被所有存储引擎忽略。

正如人们所指出的,这就是为什么必须将触发器用作解决方法的原因。

将来,您可能想看看PostgreSQL,PostgreSQL被许多人认为对数据完整性(以及其他方面)有更好的支持。



 类似资料:
  • 问题内容: 我在一个网站上有一个表格,该表格有很多不同的领域。一些字段是可选的,而某些字段是必填的。在我的数据库中,我有一个包含所有这些值的表,是否将NULL值或空字符串插入用户未放置任何数据的DB列中是更好的做法? 问题答案: 通过使用,您可以区分“不输入数据”和“不输入数据”。 更多区别: 一个的就是,一个空字符串的是。 s在空字符串之前排序。 将计算空字符串,但不计算s 您可以使用绑定变量搜

  • 问题内容: 如何防止在php mysql中输入重复记录?在插入表之前验证输入。 我目前正在为我的网站建立一个用户注册部分,但是如果在数据库中发现重复的用户名或电子邮件地址,我想向他们显示一个错误。 编辑 这是我到目前为止要插入的行…我将如何在这里实现这两个答案: 我猜我可以在if … else语句中实现所有功能吗? 问题答案: 我使用了sql语句以及if else语句。 然后 显示错误消息,以防止

  • 我有一个StringBuffer类型的变量,它有null字符,即“\0”中间体。我可以用null字符正确打印变量。但是当我试图在Oracle表中插入这个变量时,我不能插入整个StringBuffer变量;只有“\0”之前的部分。我插入这个变量的列的数据类型为varchar2(50)。我不知道为什么会这样。可能是oracle不允许字符串带有null术语字符中间体。我知道一旦在字符串中遇到“\0”,它

  • 我一直在准备技术面试。所以有一件事我不确定。如果我写一个例子 这是否已经防止了字符串注入?或者我必须这样写: 提前道谢!

  • 使用我发现研究如何在字符串的字符之间插入空格的代码(这里),我修改了结果,但这并没有在“你好”和“世界”之间的空格周围插入额外的空格——你能让我知道我错过了什么吗?还有,L%2是做什么的?谢谢!将结果输出到浏览器是很重要的。

  • 问题内容: 我有一个将某些变量插入数据库的MySQL语句。我最近添加了两个可选字段($ intLat,$ intLng)。现在,如果未输入这些值,我将传递一个空字符串作为值。如何将明确的NULL值传递给MySQL(如果为空)? 问题答案: 要将NULL传递给MySQL,只需执行此操作。 因此,在您的代码中,检查是,如果是,请使用代替或。