0

次のストアド関数が返されます: '#1172 - 結果は複数の行で構成されていました'

私は何を間違っていますか?

これはストアド関数であり、パラメーターがなく、int が返されることを期待しています。

BEGIN
    DECLARE l_user_id INT;

    sloop:LOOP
        SELECT `user_id` INTO `l_user_id` FROM `users` WHERE `area_id` = 1;

    INSERT INTO `user_function_hours` SET `function_hour_id` = 1, `user_id` = l_user_id;
    INSERT INTO `user_function_hours` SET `function_hour_id` = 2, `user_id` = l_user_id;
    INSERT INTO `user_function_hours` SET `function_hour_id` = 3, `user_id` = l_user_id;
    INSERT INTO `user_function_hours` SET `function_hour_id` = 4, `user_id` = l_user_id;
    INSERT INTO `user_function_hours` SET `function_hour_id` = 5, `user_id` = l_user_id;
    END LOOP sloop;

    RETURN 1;
END
4

1 に答える 1

0

はい、トリガーでこの種のエラーに直面します。

このクエリを確認してください。結果として複数のレコードが提供されます。

SELECT `user_id` INTO `l_user_id` FROM `users` WHERE `area_id` = 1;

このクエリを次のように変更してください。

SELECT `user_id` INTO `l_user_id` FROM `users` WHERE `area_id` = 1 LIMIT 1;

そのため、このエラーを解決できます。

于 2013-02-22T15:55:15.757 に答える