Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lặp qua tất cả các bảng và đổi tên một cột

May mắn thay, MySQL 8 đi kèm với ALTER TABLE RENAME COLUMN a TO b cú pháp để bạn có thể viết một thủ tục được lưu trữ đơn giản hợp lý để thực hiện việc này.

DELIMITER //

CREATE PROCEDURE rename_columns(IN name_of_database CHAR(64),
                                IN old_name_of_column CHAR(64),
                                IN new_name_of_column CHAR(64))
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE name_of_table CHAR(64);
    DECLARE table_cursor CURSOR FOR
        SELECT TABLE_NAME FROM information_schema.COLUMNS
        WHERE TABLE_SCHEMA = name_of_database AND COLUMN_NAME = old_name_of_column;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN table_cursor;
    table_loop: LOOP
        FETCH table_cursor INTO name_of_table;
        IF done THEN LEAVE table_loop; END IF;
        SET @alter_sql = CONCAT(
            'ALTER TABLE ', name_of_database, '.', name_of_table,
            ' RENAME COLUMN ', old_name_of_column, ' TO ', new_name_of_column);
        PREPARE alter_statement FROM @alter_sql;
        EXECUTE alter_statement;
        DEALLOCATE PREPARE alter_statement;
    END LOOP;
    CLOSE table_cursor;
END//

DELIMITER ;

CALL rename_columns('old_data', 'hash', 'old_hash');

Nó phức tạp hơn trong phiên bản 5.7 trở về trước vì bạn sẽ cần tạo ALTER TABLE CHANGE a b ... câu lệnh bao gồm định nghĩa cột đầy đủ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đặt giá trị nhiều lựa chọn từ đối tượng mảng trong yii2 khi cập nhật

  2. Tạo kết nối MySQL trong Playframework với slick

  3. Chèn dữ liệu đã chọn vào cơ sở dữ liệu

  4. Làm cách nào để chèn ngày vào mysql dưới dạng tham số?

  5. Các khung nhìn MySQL hoạt động như thế nào?