mysql 데이터베이스의 모든 테이블에 동일한 필드 추가

testEndHandle이 존재하는 경우 삭제 절차;
DELIMITER $$
 
 CREATE PROCEDURE testEndHandle()
BEGIN
  DECLARE s_tablename VARCHAR(100);
 
 /*显示表的数据库中的所有表
 SELECT table_name FROM information_schema.tables WHERE table_schema='databasename' Order by table_name ;
 */
 
#显示所有
 DECLARE cur_table_structure CURSOR
 FOR 
 SELECT table_name 
 FROM INFORMATION_SCHEMA.TABLES 
 WHERE table_schema = 'ym_wms' AND table_type = 'BASE TABLE'
AND table_schema = DATABASE () AND table_name NOT IN (
 SELECT t.table_name FROM (
     SELECT table_name,column_name FROM information_schema.columns 
     WHERE 테이블_이름 IN( 
        SELECT table_name 
        FROM INFORMATION_SCHEMA.TABLES 
        WHERE table_schema = 'ym_wms'
        AND table_type = 'BASE TABLE'
AND table_schema = DATABASE ()
)
     ) t WHERE t.column_name='tenant_id' 
 );
 
 SQLSTATE '02000'에 대한 계속 핸들러 선언 SET s_tablename = NULL;
 
 OPEN cur_table_structure;
 
 FETCH cur_table_structure INTO s_tablename;
 
 WHILE ( s_tablename은 NULL이 아닙니다) DO
  SET @MyQuery=CONCAT("alter table `",s_tablename, "` ADD COLUMN `tenant_id` VARCHAR(32) COMMENT '租户ID'");
  @MyQuery에서 msql을 준비하세요.
  
  msql 실행 ;#USING @c; 
   
  FETCH cur_table_structure INTO s_tablename;
  종료하는 동안;
    cur_table_structure 닫기;
 
 
끝;
 $$


 testEndHandle() 호출;

추천

출처blog.csdn.net/guoweiting/article/details/107470183