1

次のテーブル構造があるとします。

ユーザー:

id INT(10)

投稿:

id INT(10)

ユーザーの投稿:

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 が渡された場合にどこかにエラーを記録したい場合があるので、便利です。

4

0 に答える 0