mysql データベース内のすべてのテーブルに同じフィールドを追加します。

testEndHandle が存在する場合はプロシージャを削除します。
DELIMITER $$
 
 CREATE PROCEDURE testEndHandle()
BEGIN
  DECLARE s_tablename VARCHAR(100);
 
 /* 表示されるテーブルのデータベース内のすべてのテーブル
 SELECT table_name FROM information_schema.tables WHERE table_schema='databasename' table_name で並べ替えます。
 */
 
#表示すべて
 DECLARE cur_table_struct 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 table_name 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' の CONTINUE ハンドラーを宣言 SET s_tablename = NULL;
 
 cur_table_struct を開く;
 
 cur_table_struction INTO s_tablename; をフェッチします。
 
 WHILE ( s_tablename IS NOT NULL) DO
  SET @MyQuery=CONCAT("alter table `",s_tablename, "` ADD COLUMN `tenant_id` VARCHAR(32) COMMENT '租户ID'");
  @MyQuery から msql を準備します。
  
  msql ;#USING @c; を実行します。 
   
  cur_table_struction INTO s_tablename; をフェッチします。
  途中で終了。
    CLOSE cur_table_struct;
 
 
終わり;
 $$


 CALL testEndHandle();

おすすめ

転載: blog.csdn.net/guoweiting/article/details/107470183
おすすめ