jm_p_op

FK 있던 테이블에 default값과 함께 추가 본문

Node.js/Express

FK 있던 테이블에 default값과 함께 추가

jm_p_op 2024. 4. 28. 16:58
  • migration
    • promise 
      • Status 테이블 생성
        • defualt값 만들기
      • users에 state 값 만들고 default 값의 id 넣기
    • PK- FK 연결해주기
  • migration:undo
    • users.state 삭제
    • Status 테이블 삭제
'use strict';

const { QueryInterface } = require('sequelize');

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up (queryInterface, Sequelize) {
    await Promise.all([
      queryInterface.createTable('Status', 
    { stateId: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER,
      },
    stateName: {
      type: Sequelize.STRING,
      unique:true,
      allowNull:false
    }})
    .then(()=>queryInterface.sequelize.query(`
    INSERT INTO public."Status"(
      "stateName")
     VALUES ( 'Active');`
    )),
      queryInterface.addColumn("Users","state",{
      type: Sequelize.INTEGER,
      defaultValue:1,
      allowNull:false
      })
    ])
    
    await queryInterface.addConstraint("Users",{
      fields:["state"],
      type:"foreign key",
      references:{
        table:"Status",
        field:"stateId"
      },
      onDelete:"cascade",
      onUpdate:"cascade"
    })
  },

  async down (queryInterface, Sequelize) {
    await queryInterface.removeColumn('Users','state')
    await queryInterface.dropTable('Status')
  }
};

'Node.js > Express' 카테고리의 다른 글

1:1, 1:m, m:n field Model&findAll  (0) 2024.04.30
Status.init({},{table 설정})  (0) 2024.04.30
DATEONLY - 날짜 오류 조심  (0) 2024.04.28
FK  (0) 2024.04.28
SQL ionjection 공격 - Sequelize의 경우  (0) 2024.04.25