0

我有一个数据库,我通过应用程序在其中输入值。具体来说,我在文本框中输入某个值,然后单击保存按钮,该按钮处理将其保存到数据库中的任务。我面临的问题是,即使我没有在文本框中输入任何值并单击保存按钮,值也会保存到数据库中(我应该在代码中处理的情况)。现在我想编写一个 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 ;

谁能告诉我该怎么做,还有其他方法可以实现吗?

4

5 回答 5

1

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

于 2013-05-02T06:15:03.957 回答
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
    ;

在插入之前创建触发器

于 2013-05-02T06:15:31.257 回答
0

只是一个想法..

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

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

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

于 2013-05-02T06:16:31.893 回答
0

检查应用程序中的输入值是否为空,这应该是应用程序逻辑的一部分。if empty, dont insert- 而已。

于 2013-05-02T06:19:38.403 回答
0

您想要的称为“约束”:

ALTER TABLE books MODIFY author_name varchar(200) NOT NULL;
于 2013-05-02T06:20:51.643 回答