Postgres 和 Sequelize - SequelizeUniqueConstraintError

Postgres and Sequelize - SequelizeUniqueConstraintError

我有这个table:

CREATE TABLE "wf"."WorkflowAssignationContact" (
"workflowAssignationId" int4 NOT NULL,
"contactId" int4 NOT NULL,
"contactNumber" varchar NOT NULL,
CONSTRAINT "WorkflowAssignationContact_contactId_fkey" FOREIGN KEY ("contactId") REFERENCES "public"."contacts"("id"),
CONSTRAINT "WorkflowAssignationContact_workflowAssignationId_fkey" FOREIGN KEY ("workflowAssignationId") REFERENCES "wf"."WorkflowAssignation"("id"),
PRIMARY KEY ("workflowAssignationId","contactId"));

据我所知,这是一个带有两个主键的 table,所以对我来说,这意味着只有当这对(contactId 和 workflowAssignationId)等于其他已保存的对时,它才会阻止我保存,对吗?

好吧,当我尝试用这个查询保存时:

INSERT INTO "wf"."WorkflowAssignationContact" ("workflowAssignationId", "contactId", "contactNumber") VALUES (9, 1887, 'cfs:078286556');

我收到这个错误:

错误:重复键值违反唯一约束“WorkflowAssignationContact_pkey” 详细信息:键 ("workflowAssignationId", "contactId")=(9, 1887) 已经存在。

table完全是空的...

已验证 ID 9 存在于相关 table 中,并且 1887 是联系人 table 中的有效 ID。

sequelize模型是这个:

@Table({timestamps: false, schema: 'wf'})
export class WorkflowAssignationContact extends Model<WorkflowAssignationContact> {

    @PrimaryKey
    @ForeignKey(() => WorkflowAssignation)
    @Column
    workflowAssignationId: number;

    @BelongsTo(() => WorkflowAssignation)
    workflowAssignation: WorkflowAssignation;

    @PrimaryKey
    @ForeignKey(() => contacts)
    @Column
    contactId: number;

    @Column
    contactNumber: string;

    @BelongsTo(() => contacts)
    contact: contacts;
}

非常感谢任何帮助。

编辑

正在使用续集迁移创建 table:

await queryInterface.createTable("WorkflowAssignationContact", {
                workflowAssignationId: {
                    allowNull  : false,
                    primaryKey : true,
                    type       : Sequelize.INTEGER,
                    references : {
                        model : "WorkflowAssignation",
                        key   : "id"
                    }
                },
                contactId: {
                    allowNull  : false,
                    primaryKey : true,
                    type       : Sequelize.INTEGER,
                    references : {
                        model: {
                            tableName : "contacts",
                            schema    : "public"
                        },
                        key: "id"
                    }
                },
                contactNumber: {
                    allowNull : false,
                    type      : Sequelize.STRING
                }
            }, { schema: "wf"});

我发现了问题,

在对象创建期间,Sequelize 确实工作正常:

const workflowAssignation = await WorkflowAssignation.create(obj, { include: [ { model: WorkflowAssignationContact }, { model: WorkflowStepAssignation, include: [ WorkflowStepAssignationHasUser]}] });

我正在使用 create 传递已包含联系人记录的正文对象,因此在我尝试进行批量插入时失败了,因为它们已经创建。