我想向表中添加新的唯一字段,但是当我运行类似命令时
ALTER TABLE b_iblock_element ADD `XML_ID_UNIQUE` INT NOT NULL UNIQUE AFTER `XML_ID`
我有一个错误
键“ XML_ID_UNIQUE”的条目“ 0”重复!
如何忽略此错误? 也许在MySQL中还有其他命令?
答案 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);
但是您可能还有其他分配值的方法。