특정 스키마(TTMS)에서 모든 테이블을 조회하여 prj_id가 XXX인 레코드를 모두 삭제하고 싶습니다.
프로젝트 삭제시, 관련된 테이블항목을 모두 삭제하고 싶습니다.
아래처럼 프로시져를 만들었는데, Error Code: 1146이 뜨네요.
고수님들의 도움을 요청드립니다.
프로시져가 아니고 그냥 쿼리로도 아래 내용과 동일한 효과를 얻을 수 있는지요?
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `remove_project`(project_id varchar(45))
BEGIN
DECLARE table_name VARCHAR(45);
DECLARE done INT DEFAULT false;
DECLARE cursor_tables CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'TTMS' GROUP BY TABLE_NAME;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := true;
OPEN cursor_tables;
delete_loop : LOOP
FETCH cursor_tables INTO table_name;
IF done THEN
LEAVE delete_loop;
END IF;
DELETE FROM table_name WHERE prj_id = project_id;
END LOOP;
CLOSE cursor_tables;
END |