IT

절차에서 테이블 이름을 쉽게 바꿀 수 있는 방법이 있습니까?

itgroup 2022. 11. 8. 21:46
반응형

절차에서 테이블 이름을 쉽게 바꿀 수 있는 방법이 있습니까?

MariaDB 10.1 SQLyog 11.5를 사용하고 있습니다.

아래 쿼리를 사용하여 테이블 이름을 변경했습니다.

ALTER TABLE old_name RENAME new_name

그러나 'old_name'을 참조하는 저장 프로시저가 많이 있습니다.SP 생성 쿼리를 모두 열고 변경했습니다.어느 SP에 old_name 테이블을 참조하는 쿼리가 있는지 알 수 없기 때문입니다.

old_name 테이블을 참조하는 쿼리가 있는 SP를 알 수 있는 방법이 있습니까?

이렇게 하면 저장 프로시저에서 사용할 수 있는 텍스트를 가져올 수 있습니다.

다음 쿼리를 시도해 보십시오(확인되지 않음).

SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%old_name%'
      -- AND ROUTINE_TYPE = "PROCEDURE" -- Filter only if need SPs
ORDER BY ROUTINE_NAME;

페이지의 참조

다음과 같이 할 수 있습니다.

이름 바꾸기 쿼리 만들기

SELECT  CONCAT ('RENAME TABLE ',
  GROUP_CONCAT(t.TABLE_SCHEMA,'.',t.TABLE_NAME,' TO ', t.TABLE_SCHEMA,'.',REPLACE(t.TABLE_NAME,'old','NEW') SEPARATOR ' , ') 
) INTO @sql
FROM information_schema.TABLES t
WHERE t.TABLE_TYPE = 'BASE TABLE'
AND t.TABLE_SCHEMA IN ('SCHEMA1','SCHEMA2')
AND t.TABLE_NAME LIKE 'old_table%';

확인하기 위해서만

SELECT @sql;

준비 및 실행

PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

언급URL : https://stackoverflow.com/questions/37453965/is-there-a-easy-way-to-rename-a-table-in-procedure

반응형