阻止空值输入数据库

时间:2013-05-02 06:12:49

标签: mysql sql database

我有一个数据库,我通过应用程序输入值。具体来说,我在文本框中输入特定值,然后单击“保存”按钮,该按钮处理将其保存到数据库中的任务。我面临的问题是即使我没有在文本框中输入任何值并单击保存按钮,该值也会保存到数据库中(我应该在代码中处理的情况)。现在我想写一个SQL脚本,以便阻止空值输入数据库。

例如,假设..books是包含author_name,price,year

列的表

因此,如果尝试输入空白作者姓名并尝试保存,则不应保存

我试过了:

 DELIMITER |

 CREATE TRIGGER test AFTER INSERT ON books
  FOR EACH ROW BEGIN
  IF NEW.author_name= '' THEN    
  delete from books where author_name= '';
  END IF;      
END;
|books
DELIMITER ;

任何人都可以告诉我如何做到这一点,有没有其他方法来实现这一目标?

5 个答案:

答案 0 :(得分:1)

您应该在应用程序中验证用户输入。

答案 1 :(得分:0)

您的触发器应如下所示:

CREATE TRIGGER <name of the trigger> BEFORE INSERT ON <name of table>
    FOR EACH ROW BEGIN
      IF NEW.<fieldname> = ''
      THEN
        SET NEW='Error: Cannot insert record empty value for <fieldname>';
      END IF;
    END
    ;

创建触发器之前插入

答案 2 :(得分:0)

只是一个想法..

您还可以使用检查约束来防止“非法”插入。

http://www.w3schools.com/sql/sql_check.asp

我建议在源(应用程序)处清理输入。

答案 3 :(得分:0)

检查应用程序中空白的输入值,这应该是应用程序逻辑的一部分。 if empty, dont insert - 就是这样。

答案 4 :(得分:0)

你想要的是“约束”:

ALTER TABLE books MODIFY author_name varchar(200) NOT NULL;