MySQL хранимая процедура: удалить запись, если таблица существует - PullRequest
0 голосов
/ 07 июня 2018

Я создал хранимую процедуру, которая должна удалять данные из некоторых таблиц.

На моей производительной базе данных у меня есть таблицы, которых нет в моей локальной базе данных (разные имена схем).

Есть ли элегантный способ запроса существования таблиц данных, чтобы избежать исключений?Может быть, объявить обработчик ошибок, который перехватывает конкретную ошибку и должен продолжить.

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;

заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...