sql—如何使用mysql语法将唯一字段添加到包含我的表的数据的现有表中

2q5ifsrm  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(509)

我想在表中添加新的唯一字段,但在运行命令时

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

我有个错误
键“xml\u id\u unique”的条目“0”重复!
如何忽略此错误?也许mysql中还有其他命令?

snz8szmq

snz8szmq1#

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

  1. -- add the column, with no unique constraint
  2. ALTER TABLE b_iblock_element
  3. ADD `XML_ID_UNIQUE` INT NOT NULL AFTER `XML_ID`;
  4. -- assign the values in the column some unique values
  5. UPDATE b_iblock_element
  6. SET XML_ID_UNIQUE = <something unique>;
  7. -- add in the unique constraint
  8. ALTER TABLE b_iblock_element ADD CONSTRAINT unq_XML_ID_UNIQUE UNIQUE (b_iblock_element);
  9. ``` `<something unique>` 可以指定为:

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

  1. 但是你可能有其他的赋值方法。
展开查看全部

相关问题