【发布时间】:2016-11-14 10:24:09
【问题描述】:
我需要编写 SQL 脚本,如果在 DB 中找不到某些值,该脚本就会停止。 像这样的东西(伪代码):
BEGIN;
...
set @a = (select ... );
if @a IS NULL THEN STOP_WITH_ERROR_AND_ROLLBACK();
...
COMMIT;
有人可以帮帮我吗?
更新:由于某些原因,我不能使用存储过程或函数。
更新 2: 注意:我不需要显式回滚。脚本执行的中断就足够了。它会自动回滚未提交事务的更改。
【问题讨论】:
-
MySQL 允许您在存储的程序中声明错误处理程序(例如
DECLARE EXIT HANDLER FOR NOT FOUND...;参见here,它可以在退出之前执行您可能需要的特定代码。您是说您不能使用存储的过程/功能。你能解释一下原因吗? -
我编写脚本,我们的数据库管理员将使用它来编辑我们的数据库。通常,脚本从远程计算机运行,但出于安全原因,从我们的 MySql 服务器禁用的远程连接更改和/或创建存储过程。注意:我不需要显式回滚。脚本执行的中断就足够了。它会自动回滚未提交事务的更改。
-
Kumar 发布的解决方案有效吗?
-
没有。它不起作用。
标签: mysql sql select sql-scripts