[英]Mirror mysql table structure
有人將如何維護共享相似結構的不同表:
示例:我有600個表,其中包含20個字段,並且我已經使用此結構幾個月了,如果我需要刪除1個字段並添加2個新字段,怎么辦?僅通過更改包含該結構的主表怎么辦?所有其他克隆表都必須使用?
好吧,您可能知道您的結構遠非最佳,最好的解決方案是對其進行重組。 但是,對於舊系統而言,這並不總是那么容易,因此仍只能使用MySQL執行該任務。
您將需要在那里只能在存儲過程內部使用的“游標”,因此您需要首先創建一個存儲過程(其示例代碼在下面),然后以CALL alter_many_tables()
身份執行;
CREATE PROCEDURE alter_many_tables()
BEGIN
-- reading names of the table to update in a cursor
DECLARE tables_cursor CURSOR FOR
SELECT DISTINCT
`TABLE_NAME`
FROM
`information_schema`.`columns`
WHERE
`TABLE_NAME` LIKE '%\_modulep'
;
-- condition for the loop over found tables to stop
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- looping
read_loop: LOOP
-- reading table name into a variable
FETCH tables_cursor INTO table_name;
-- check if the loop is over
IF done THEN
LEAVE read_loop;
END IF;
-- forming a table update SQL (modify it as you need)
SET @sql = CONCAT('ALTER TABLE ', @table_name, ' ADD COLUMN `new_column` VARCHAR(45) NULL DEFAULT NULL');
-- executing the SQL we have composed above
PREPARE stmt FROM @sql;
EXECUTE stmt;
END LOOP;
-- closing the cursor
CLOSE table_cursor;
END;
上面的代碼段中可能存在一些較小的語法錯誤,因為我目前無法測試,但是您明白了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.