web-dev-qa-db-fra.com

Comment soulever conditionnellement une erreur dans MySQL sans procédure stockée

J'ai besoin de soulever de manière conditionnelle une erreur, mais je ne peux utiliser qu'une seule déclaration et aucune procédure stockée.

J'aimerais faire quelque chose comme ça:

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

Malheureusement, le signal est uniquement utilisable dans des déclencheurs et des procédures et je dois l'utiliser dans une application existante qui ne me permet que de saisir des déclarations, mais pas des procédures. (Je n'ai qu'une ligne longue et aucun moyen de définir un délimiteur, etc.)

Y a-t-il une autre façon de provoquer une erreur d'exécution?

6
Gene Vincent

Récupérez la colonne d'une table avec plusieurs rangées dans la partie autre

select case when foo = "bar" then 1 else (select table_name from information_schema.tables) end;

Comme exemple, utilisons @foo au lieu de 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

Essaie !!

9
RolandoMySQLDBA