解决外键约束冲突:使用指针类型处理_id 为 NULL 的情况

32 阅读1分钟

INSERT INTO authorization_records (auth_code,software_type,applicant_id,approver_id,auth_status) VALUES ('3','软件授权',5,0,'待处理')

问题分析:

  • INSERT 语句中,approver_id 被插入为 0,但数据库中的外键约束要求 approver_id 必须是 users 表中的有效 id(即 id 必须大于零,且是 users 表中实际存在的记录)。这就是导致外键约束失败的原因。

解决方案

// 如果 approver_id 为 0 或无效,可以将其设置为 NULL
approverID := in.ApproverID
if approverID == 0 {
    approverID = nil // 设置为 NULL
}
 ApproverID:   approverID,


**使用指针类型**:如果你希望 `ApproverID` 可以为 `nil`(即没有指定审批人),
你可以将 `ApproverID` 的类型改为 `*uint`,这样就可以将其设置为 `nil`