0

我想在 mysql 中编写一个存储过程,在插入表之前验证数据。然后使用 JDBC 将自定义消息(例如“Zipcode not valid”)发回给 Java,以便它可以显示在屏幕上。这样的事情甚至可能吗?

4

3 回答 3

2

首先我想强调@duffymo 是绝对正确的

...但是如果您仍想编写这样的程序,此代码段可能会有所帮助:

delimiter ;;
CREATE PROCEDURE insert_checked_zip(zipdata int)
BEGIN
    IF (zipdata > 0) THEN
        INSERT INTO mytable (zipcode) VALUES (zipdata);
    ELSEIF
        SELECT 'zip was invalid';
    END IF;
END
;;
delimiter ;

注意:它只检查传递的 zip 是否大于 0

请考虑在 GUI 级别进行这些检查 - 它们更便宜且速度更快(仅列出 2 个优点)。

于 2013-08-26T12:34:18.697 回答
1

不管 MySQL 和 JDBC 做什么,我认为捕获任何异常并处理向用户显示的内容是控制器的责任。

更重要的是,一路去数据库发现您输入了错误的邮政编码是一种糟糕的用户体验。在 UI 中验证它。输入应该没有格式问题。如果违反了业务规则,我只希望看到这种消息。

于 2013-08-26T12:16:29.603 回答
1

我相信您应该考虑在触发器之前编写而不是编写 sql 过程,它会在每次插入行之前触发,如果验证失败,甚至可以停止行插入。

于 2013-08-26T13:34:41.010 回答