Bird
0
0

You want to create a migration that renames a column 'username' to 'user_name' in the 'accounts' table and can be reverted. Which up() and down() methods are correct?

hard📝 Application Q15 of 15
NestJS - Database with TypeORM
You want to create a migration that renames a column 'username' to 'user_name' in the 'accounts' table and can be reverted. Which up() and down() methods are correct?
A<pre>async up(queryRunner) { await queryRunner.query(`ALTER TABLE accounts RENAME COLUMN username TO user_name`); } async down(queryRunner) { await queryRunner.query(`ALTER TABLE accounts RENAME COLUMN user_name TO username`); }</pre>
B<pre>async up(queryRunner) { await queryRunner.query(`ALTER TABLE accounts CHANGE username user_name varchar(255)`); } async down(queryRunner) { await queryRunner.query(`ALTER TABLE accounts CHANGE user_name username varchar(255)`); }</pre>
C<pre>async up(queryRunner) { await queryRunner.query(`ALTER TABLE accounts DROP COLUMN username`); await queryRunner.query(`ALTER TABLE accounts ADD COLUMN user_name varchar(255)`); } async down(queryRunner) { await queryRunner.query(`ALTER TABLE accounts DROP COLUMN user_name`); await queryRunner.query(`ALTER TABLE accounts ADD COLUMN username varchar(255)`); }</pre>
D<pre>async up(queryRunner) { await queryRunner.query(`RENAME COLUMN username TO user_name`); } async down(queryRunner) { await queryRunner.query(`RENAME COLUMN user_name TO username`); }</pre>
Step-by-Step Solution
Solution:
  1. Step 1: Identify correct SQL syntax for renaming columns

    The standard SQL syntax supported by many databases is ALTER TABLE table_name RENAME COLUMN old_name TO new_name.
  2. Step 2: Check each option's SQL correctness and revert logic

    async up(queryRunner) {
      await queryRunner.query(`ALTER TABLE accounts RENAME COLUMN username TO user_name`);
    }
    async down(queryRunner) {
      await queryRunner.query(`ALTER TABLE accounts RENAME COLUMN user_name TO username`);
    }
    uses correct syntax for both up() and down() to rename and revert the column name.
    async up(queryRunner) {
      await queryRunner.query(`ALTER TABLE accounts CHANGE username user_name varchar(255)`);
    }
    async down(queryRunner) {
      await queryRunner.query(`ALTER TABLE accounts CHANGE user_name username varchar(255)`);
    }
    uses MySQL-specific CHANGE syntax which may not be portable.
    async up(queryRunner) {
      await queryRunner.query(`ALTER TABLE accounts DROP COLUMN username`);
      await queryRunner.query(`ALTER TABLE accounts ADD COLUMN user_name varchar(255)`);
    }
    async down(queryRunner) {
      await queryRunner.query(`ALTER TABLE accounts DROP COLUMN user_name`);
      await queryRunner.query(`ALTER TABLE accounts ADD COLUMN username varchar(255)`);
    }
    drops and adds columns, losing data.
    async up(queryRunner) {
      await queryRunner.query(`RENAME COLUMN username TO user_name`);
    }
    async down(queryRunner) {
      await queryRunner.query(`RENAME COLUMN user_name TO username`);
    }
    misses the table name in the query, causing error.
  3. Final Answer:

    ALTER TABLE accounts RENAME COLUMN username TO user_name -> Option A
  4. Quick Check:

    Rename column with ALTER TABLE RENAME COLUMN [OK]
Quick Trick: Use ALTER TABLE RENAME COLUMN for renaming columns [OK]
Common Mistakes:
  • Dropping and adding columns instead of renaming
  • Omitting table name in ALTER TABLE
  • Using database-specific syntax without checking compatibility

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More NestJS Quizzes