sql >> データベース >  >> RDS >> Mysql

ロックされたテーブルの名前を変更する

    一般的に、リックはPerconaツールを使用する権利があります(1 および 2 )、質問への答えは実際にはALTER TABLEを使用することです 。 RENAMEだと思いました 単なるエイリアスでしたが、そうではないようです

    テストは、これが正常に機能することを示しているようです:

    CREATE TABLE foo_new (...)
    
    -- copy data to new table, might take very long
    INSERT INTO foo_new (id,created_at,modified_at)
      SELECT * FROM foo WHERE id <= 3;
    
    LOCK TABLES foo WRITE, foo_new WRITE;
    
    -- quickly copy the tiny rest over
    INSERT INTO foo_new (id,created_at,modified_at)
      SELECT * FROM foo WHERE id > 3;
    
    -- now switch to the new table
    ALTER TABLE foo RENAME TO foo_old;
    ALTER TABLE foo_new RENAME TO foo;
    
    UNLOCK TABLES;
    


    1. docker-entrypoint-initdbのMySQLスクリプトは実行されません

    2. Linux上のSQLServer2016

    3. スペースを含むOracleテーブルの列名

    4. SQL Serverの計算列とは何ですか?