Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सभी तालिकाओं के माध्यम से लूप करें और एक कॉलम का नाम बदलें

सौभाग्य से MySQL 8 एक ALTER TABLE RENAME COLUMN a TO b . के साथ आता है सिंटैक्स ताकि आप ऐसा करने के लिए एक उचित रूप से सरल संग्रहित प्रक्रिया लिख ​​सकें।

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');

यह 5.7 और इससे पहले के संस्करणों में अधिक जटिल है क्योंकि आपको एक ALTER TABLE CHANGE a b ... जनरेट करना होगा। कथन जिसमें पूर्ण स्तंभ परिभाषा शामिल है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पहले मान को अकेला छोड़ते हुए एक दोहराव मान को 0 पर सेट करें

  2. डेटाग्रिडव्यू चयनित पंक्ति से mysql डेटाबेस अपडेट करें

  3. MySQL विजुअल स्टूडियो चयनित ऑब्जेक्ट के लिए डिज़ाइन विंडो नहीं बना सकता

  4. MySQL के साथ एक वेबसाइट बनाएं

  5. मैसकल/php ट्री नेविगेशन मेनू