如何使用 mySQL 语法将 UNIQUE 字段添加到现有 table 以及我的 table 的数据

How to add an UNIQUE field to existing table with data for my table using mySQL syntax

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

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

我有一个错误

Duplicate entry '0' for key 'XML_ID_UNIQUE'!

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

如果table中有数据,需要分三步进行:

-- 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);

但您可能有一些其他的赋值方式。