MySql:如果SELECT,则停止脚本!=(某些结果)

时间:2017-06-22 10:10:33

标签: mysql

我有一个数据清理脚本,我在Windows的Mysql Workbench中执行。在脚本的开头我有:

select @@hostname;
-- WARNING: it HAS to be `srv-datatest`

(+ the rest of the script)

如果不满足条件(@@ hostname ='srv-datatest'),我希望脚本停在该行。

我尝试过的事情:

如何抛出异常:

DECLARE invalid_database CONDITION FOR 1051;
SIGNAL invalid_database;
-- DECLARE is not accepted by my workbench, and it lacks the "if" part anyway

如何在选择中执行IF:

SELECT IF(@@hostname='srv-datatest','yes','no');   
-- It lacks the "stop here" part 

2 个答案:

答案 0 :(得分:0)

创建一个将执行您的流程和测试的存储过程。

mysql workbench中的脚本应该只调用存储过程

答案 1 :(得分:0)

使用this ingenious solution

可以在没有存储过程的情况下运行它
SET @hostname :=  (SELECT @@hostname);
SET @condition = (@hostname='srv-datatest');
SET SESSION sql_mode = if(@condition, @@SESSION.sql_mode, 'Script stopped. Check condition.');

在此代码中:

  • 如果@condition=1,脚本将顺利运行。
  • 如果@condition=0它会抛出异常,显示消息错误。