programing

열 'id'가 없는 표 속편화

kingscode 2023. 2. 1. 22:10
반응형

열 'id'가 없는 표 속편화

표에 대한 속편 정의는 다음과 같습니다.

AcademyModule = sequelize.define('academy_module', {
        academy_id: DataTypes.INTEGER,
        module_id: DataTypes.INTEGER,
        module_module_type_id: DataTypes.INTEGER,
        sort_number: DataTypes.INTEGER,
        requirements_id: DataTypes.INTEGER
    }, {
        freezeTableName: true
});

보시는 바와 같이id컬럼을 표시합니다.그러나 삽입을 시도해도 다음 SQL이 시도됩니다.

 INSERT INTO `academy_module` (`id`,`academy_id`,`module_id`,`sort_number`) VALUES (DEFAULT,'3',5,1);

디세블로 하려면 어떻게 해야 하나요?id기능이 명확합니까?

정의하지 않은 경우primaryKey그 후 용도를 속편화하다id디폴트입니다.

독자적인 설정을 원하시면primaryKey: true를 참조해 주세요.

AcademyModule = sequelize.define('academy_module', {
    academy_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
    },
    module_id: DataTypes.INTEGER,
    module_module_type_id: DataTypes.INTEGER,
    sort_number: DataTypes.INTEGER,
    requirements_id: DataTypes.INTEGER
}, {
    freezeTableName: true
});

테이블의 프라이머리 키를 완전히 비활성화하려면Model.removeAttributeSequelize는 ORM이기 때문에 추가 설정이 필요하므로 향후 문제가 발생할 수 있습니다.

const AcademyModule = sequelize.define('academy_module', {
    academy_id: DataTypes.INTEGER,
    module_id: DataTypes.INTEGER,
    module_module_type_id: DataTypes.INTEGER,
    sort_number: DataTypes.INTEGER,
    requirements_id: DataTypes.INTEGER
}, {
    freezeTableName: true
});
AcademyModule.removeAttribute('id');

모델에 ID 열이 없는 경우 Model.removeAttribute('id');를 사용하여 삭제할 수 있습니다.

http://docs.sequelizejs.com/en/latest/docs/legacy/ 를 참조해 주세요.

그래서 당신의 경우엔

AcademyModule = sequelize.define('academy_module', {
    academy_id: DataTypes.INTEGER,
    module_id: DataTypes.INTEGER,
    module_module_type_id: DataTypes.INTEGER,
    sort_number: DataTypes.INTEGER,
    requirements_id: DataTypes.INTEGER
}, {
    freezeTableName: true
});
AcademyModule.removeAttribute('id');

주의: 조인 테이블을 만들고 있는 것 같습니다.만드는 것을 고려하다academy_id 그리고. module_id프라이머리 키이렇게 하면 동일한 링크가 여러 번 나타나지 않고 데이터베이스가 숨겨진 ID 열을 헛되이 만들지 않습니다.

복합 기본 키의 경우 기본 키의 모든 열 부분에 "primaryKey: true"를 추가해야 합니다.Sequelize는 이러한 열을 복합 기본 키의 일부로 간주합니다.

언급URL : https://stackoverflow.com/questions/29233896/sequelize-table-without-column-id

반응형