MySql条件停止脚本执行

时间:2016-11-14 10:24:09

标签: mysql sql select sql-scripts

我需要编写SQL脚本,如果在DB中找不到某些值,它将停止。 像这样的东西(伪代码):

BEGIN;
...
set @a = (select ... );
if @a IS NULL THEN STOP_WITH_ERROR_AND_ROLLBACK();
...
COMMIT;

有人可以帮帮我吗?

更新:由于某些原因,我无法使用存储过程或功能。

更新2:注意:我不需要显式回滚。打破脚本执行就足够了。它会自动回滚未提交事务的更改。

2 个答案:

答案 0 :(得分:3)

    start transaction;

    set @a=(select ...);
     -- whatever you want to execute your code like insert, update

    set @b=(select if(@a is null,'ROLLBACK','COMMIT'));
    -- @b is store **ROLLBACK** if @a is null nither store **COMMIT**

    prepare statement1 from @b;
    -- now statement1 store as @a value
    execute statement1;

我希望它能解决你的问题。

答案 1 :(得分:1)

这应该让你去。关于如何使用事务的一些研究是mySQL。

START TRANSACTION
...
set @a = (select ... );
IF @a IS NULL 
THEN
 SELECT 'Error Message' as ErrorMsg
 ROLLBACK;
END IF;
...
COMMIT;