我已经创建了一个存储过程,它应该从一些表中删除数据。
在我的生产数据库中,我有一些本地数据库中没有的表(不同的模式名)。
有没有一种优雅的方法来查询数据表以避免异常?可以声明一个错误处理程序,它捕获特定的错误并应该继续。
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;
提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!