Alter table modify enum in Knex js for Postgresql gives error

前端 未结 2 607
抹茶落季
抹茶落季 2021-02-14 16:14

I am using knex js and postgresql database. I have used a migration file to create a table knex migrate:make create_car_table. In this I have added a column fuel_ty

2条回答
  •  青春惊慌失措
    2021-02-14 16:31

    You first need to drop the existing constraint, and create a new one with the new values. The code sample below should help.

    exports.up = function(knex, Promise) {
      return knex.schema.raw(`
        ALTER TABLE "car" DROP CONSTRAINT "car_fuel_type_check";
        ALTER TABLE "car" ADD CONSTRAINT "car_fuel_type_check" CHECK (fuel_type IN ('HYBRID'::text, 'ELECTRIC'::text, 'PETROL'::text, 'DIESEL'::text))
      `);
    };
    
    // The reverse migration is similar
    exports.down = function(knex, Promise) {
      return knex.schema.raw(`
        ALTER TABLE "car" DROP CONSTRAINT "car_fuel_type_check";
        ALTER TABLE "car" ADD CONSTRAINT "car_fuel_type_check" CHECK (fuel_type IN ('PETROL'::text, 'DIESEL'::text, 'CNG'::text));
      `);
    };
    

    I'm assuming your constraint name is car_fuel_type_check. If not, you should replace car_fuel_type_check with your constraint name.

提交回复
热议问题