如何使用mySQL语法将具有我表数据的UNIQUE字段添加到现有表中

时间:2018-08-10 10:51:54

标签: mysql sql field unique alter

我想向表中添加新的唯一字段,但是当我运行类似命令时

ALTER TABLE b_iblock_element ADD `XML_ID_UNIQUE` INT NOT NULL UNIQUE AFTER `XML_ID`

我有一个错误

  

键“ XML_ID_UNIQUE”的条目“ 0”重复!

如何忽略此错误? 也许在MySQL中还有其他命令?

1 个答案:

答案 0 :(得分:1)

如果表中有数据,则需要分三个步骤进行操作:

-- add the column, with no unique constraint
ALTER TABLE b_iblock_element
    ADD `XML_ID_UNIQUE` INT NOT NULL AFTER `XML_ID`;

-- assign the values in the column some unique values
UPDATE b_iblock_element
    SET XML_ID_UNIQUE = <something unique>;

-- add in the unique constraint
ALTER TABLE b_iblock_element ADD CONSTRAINT unq_XML_ID_UNIQUE UNIQUE (b_iblock_element);

<something unique>可以分配为:

UPDATE b_iblock_element CROSS JOIN
       (SELECT @rn := 0) params
    SET XML_ID_UNIQUE = (@rn := @rn + 1);

但是您可能还有其他分配值的方法。