如何处理存储过程中的特定外键错误?

时间:2012-09-13 23:15:07

标签: mysql stored-procedures

假设我有以下表结构:

用户:

id INT(10)

帖子:

id INT(10)

users_posts:

user_id (FOREIGN KEY [fk_up_1]: users.id)
post_id (FOREIGN KEY [fk_up_2]: posts.id)

然后,我创建了一个这样的过程:

CREATE PROCEDURE sp_user_add_post(v_user_id INT(10), v_post_id INT(10))
BEGIN
    DECLARE EXIT HANDLER FOR 1452 RESIGNAL SET MESSAGE_TEXT = "Invalid user_id or post_id";
    DECLARE EXIT HANDLER FOR SQLEXCEPTION RESIGNAL;

    INSERT INTO `users_posts` (`user_id`, `post_id`)
        VALUES (v_user_id, v_post_id);
END

问题:如何区分特定的FK错误情况?我可以检索错误的FK名称(在上面的示例中为fk_up_1fk_up_2)吗?例如,如果传递了无效的user_id,我可能想在某处记录错误,因此它可以派上用场。

0 个答案:

没有答案