条件付きでエラーを発生させる必要がありますが、使用できるのは単純なステートメントのみで、ストアドプロシージャは使用できません。
私はこのようなことをしたいと思います:
select case when foo = "bar" then 1 else SIGNAL SQLSTATE 'ERROR' end;
残念ながら、SIGNALはトリガーとプロシージャでのみ使用でき、ステートメントの入力のみを許可し、プロシージャの入力は許可しない既存のアプリケーション内で使用する必要があります。 (私には長い行が1つしかなく、DELIMITERなどを設定する方法はありません。)
実行時エラーを条件付きで発生させる他の方法はありますか?
Else部分に複数の行があるテーブルから列を取得する
select case when foo = "bar" then 1 else (select table_name from information_schema.tables) end;
例として、fooの代わりに@fooを使用してみましょう
mysql> select case when @foo = "bar" then 1 else (select table_name from information_schema.tables) end;
ERROR 1242 (21000): Subquery returns more than 1 row
試してみる !!