【问题标题】:Change unique key together in mysql在mysql中一起更改唯一键
【发布时间】:2013-11-21 08:47:55
【问题描述】:

我的 MYSQL 表中有一个唯一键,我想添加到它。

UNIQUE KEY `user_id` (`user_id`,`account_id`)

我想添加另一个

UNIQUE KEY `user_id` (`user_id`,`account_id`,`pet_id`)

【问题讨论】:

    标签: mysql unique


    【解决方案1】:
    ALTER TABLE your_table 
       DROP INDEX user_id, 
       ADD UNIQUE KEY `user_id` (`user_id`,`account_id`,`pet_id`)
    

    注意:如果您在 Linux 上使用 mariadb,则不需要列名周围的反引号 - 实际上它会引发语法错误 1064/(42000)

    【讨论】:

    • 有点令人困惑的是,唯一键的名称与列名位于不同的命名空间中,因此它们可以是相同的字符串但具有完全不同的含义。 (从风格上讲,我更喜欢假装它们在同一个命名空间中以避免人为假设错误。)如果不是很明显,您可以将这些语句分成两个 ALTER TABLEs。
    【解决方案2】:

    删除第一个密钥,然后创建新密钥。

    【讨论】:

      【解决方案3】:

      我使用此代码更改为空的字段“uniq_key”

      UPDATE your_table  SET `uniq_key`= CONCAT(`user_id`, account_id, pet_id) WHERE  `uniq_key`= ''
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        相关资源
        最近更新 更多