在与现有自动增量主键/分区键相关的列中添加唯一约束

问题描述 投票:0回答:1

摘要在mysql中我想为现有列添加唯一性,而没有删除表,但是由于现有的自动增量/主键/分区键,它会吐出错误。

描述我有下面的表格。并且已经有一些行。

CREATE TABLE my_table (
  `id` INT NOT NULL AUTO_INCREMENT,
  `event_tx_id` varchar(64) NOT NULL,
  `amount` int(10),
  PRIMARY KEY(id) 
)
ENGINE=InnoDB
PARTITION BY KEY(id)

并且我改变了主意,我想对列event_tx_id添加约束也很独特。

我尝试过

  1. [当我尝试像这样修改表时(添加唯一),
ALTER TABLE my_table MONDIFY COLUMN event_tx_id varchar(64) UNIQUE;

吐出错误

Error Code: 1503. A UNIQUE INDEX must include all columns in the table's partitioning function  0.078 sec
  1. 所以我先按键分区,然后按
ALTER TABLE my_table PARTITION BY KEY(id, event_tx_id);

然后吐口水

ALTER TABLE my_table PARTITION BY KEY(id, event_tx_id); Error Code: 1503. A PRIMARY KEY must include all columns in the table's partitioning function
  1. 上面的内容需要更改主键。因此,当我尝试更改主键时(删除->添加,因为没有修改方法)
ALTER TABLE my_table DROP PRIMARY KEY   Error Code: 1075. Incorrect table definition; there can be only one auto column and it must be defined as a key

它抱怨您不能更改(删除)具有自动增加功能的主键。

有什么方法可以处理这个..?thanx。

mysql primary-key innodb alter-table unique-key
1个回答
1
投票
  • 唯一性约束不适用于分区表,除非分区键是约束的一部分。

  • 分区很少提供任何性能优势或任何其他优势。您希望实现什么?

© www.soinside.com 2019 - 2024. All rights reserved.