web-dev-qa-db-ja.com

ストアドプロシージャなしでMySQLで条件付きでエラーを発生させる方法

条件付きでエラーを発生させる必要がありますが、使用できるのは単純なステートメントのみで、ストアドプロシージャは使用できません。

私はこのようなことをしたいと思います:

select case when foo = "bar" then 1 else SIGNAL SQLSTATE 'ERROR' end;

残念ながら、SIGNALはトリガーとプロシージャでのみ使用でき、ステートメントの入力のみを許可し、プロシージャの入力は許可しない既存のアプリケーション内で使用する必要があります。 (私には長い行が1つしかなく、DELIMITERなどを設定する方法はありません。)

実行時エラーを条件付きで発生させる他の方法はありますか?

6
Gene Vincent

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

試してみる !!

9
RolandoMySQLDBA