拖拉机上的爱 2023-07-23 13:49 采纳率: 100%
浏览 19
已结题

mysql 有逻辑删除时,怎么设置多字段唯一索引?

mysql数据表设计,多字段联合唯一索引怎么设置。
前提是,表中有个is_del字段。0代表未删除,1代表逻辑删除。
怎么设置code和name字段的联合唯一索引。只针对is_del = 0时生效?

  • 写回答

2条回答 默认 最新

  • Watch the clown 2023-07-23 21:23
    关注

    试一试这样

    
    CREATE TABLE table_name (
        id INT PRIMARY KEY,
        code INT,
        name VARCHAR(255),
        is_del INT,
        UNIQUE INDEX idx_code_name (code, name, is_del),
        INDEX idx_is_del (is_del)
    );
    
    DELETE t1 FROM table_name t1
    INNER JOIN table_name t2 ON t1.code = t2.code AND t1.name = t2.name AND t1.is_del = t2.is_del
    WHERE t1.id > t2.id;
    
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月6日
  • 专家已采纳回答 7月29日
  • 创建了问题 7月23日