mysql存储过程:如果表存在,则删除条目

niknxzdl  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(214)

我已经创建了一个存储过程,它应该从一些表中删除数据。
在我的生产数据库中,我有一些本地数据库中没有的表(不同的模式名)。
有没有一种优雅的方法来查询数据表以避免异常?可以声明一个错误处理程序,它捕获特定的错误并应该继续。

CREATE PROCEDURE `deletion`(IN s_id varchar(255))
BEGIN   
    DECLARE has_error BOOL DEFAULT FALSE;
    /* for all other exception there should be a rollback, if table does not exist
        then continue*/
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET has_error = TRUE; 

START TRANSACTION;

DELETE FROM a WHERE id = s_id;
DELETE FROM b WHERE id = s_id;
DELETE FROM c WHERE id = s_id;
DELETE FROM d WHERE id = s_id;

IF has_error THEN
  ROLLBACK;
 ELSE
  COMMIT;
END IF;

END

更新
我试过了,但没用。即使表存在,也不会删除条目:

IF EXISTS (SELECT 1 from information_schema.tables 
    WHERE table_schema = 'a' ) then
        DELETE FROM at WHERE id = s_id; 
    END IF;

提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题