Я создал хранимую процедуру, которая должна удалять данные из некоторых таблиц.
На моей производительной базе данных у меня есть таблицы, которых нет в моей локальной базе данных (разные имена схем).
Есть ли элегантный способ запроса существования таблиц данных, чтобы избежать исключений?Может быть, объявить обработчик ошибок, который перехватывает конкретную ошибку и должен продолжить.
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;
заранее спасибо!